<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
  "http://www.w3.org/TR/html4/loose.dtd">  
<html > 
<head><title>Piffle A Packet Filter Language</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/mn.html)"> 
<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/mn.html)"> 
<!-- html --> 
<meta name="src" content="piffle.tex"> 
<meta name="date" content="2007-06-05 11:59:00"> 
<link rel="stylesheet" type="text/css" href="piffle.css"> 
</head><body 
>
  <div class="maketitle"><div class="titlepage">


<table class="minipage"><tr><td>Vrije Universiteit Amsterdam
<br class="newline" />MPhil Parallel and Distributed Computer Systems
<br class="newline" />Compiler Construction Practical</td></tr></table>

<h2 class="titleHead"><h2 class="titleHead">Piffle<br />
A Packet Filter Language</h2></h2>
<div class="author" ><div class="author" ><span 
class="cmr-17">Jaap Weel</span></div></div>
<br />
<div class="date" ><div class="date" ><span 
class="cmr-17">Version 0.1.2 </span></div></div>

  </div> </div>

  <h2 class="likechapterHead"><a 
 id="x1-1000"></a>Contents</h2> <div class="tableofcontents">
  <span class="chapterToc">1&#x00A0;&#x00A0;<a 
href="#x1-20001" id="QQ2-1-2">Notices</a></span>
<br />  &#x00A0;<span class="sectionToc">1.1&#x00A0;&#x00A0;<a 
href="#x1-30001.1" id="QQ2-1-3">Latest version of this document</a></span>
<br />  &#x00A0;<span class="sectionToc">1.2&#x00A0;&#x00A0;<a 
href="#x1-40001.2" id="QQ2-1-4">Copyright notice</a></span>
<br />  <span class="chapterToc">2&#x00A0;&#x00A0;<a 
href="#x1-50002" id="QQ2-1-5">Introduction</a></span>
<br />  <span class="chapterToc">3&#x00A0;&#x00A0;<a 
href="#x1-60003" id="QQ2-1-6">Bounded packet filters</a></span>
<br />  &#x00A0;<span class="sectionToc">3.1&#x00A0;&#x00A0;<a 
href="#x1-70003.1" id="QQ2-1-7">Dynamic bounds on packet filters</a></span>
<br />  &#x00A0;<span class="sectionToc">3.2&#x00A0;&#x00A0;<a 
href="#x1-80003.2" id="QQ2-1-8">Static bounds on arbitrary packet filters</a></span>
<br />  &#x00A0;<span class="sectionToc">3.3&#x00A0;&#x00A0;<a 
href="#x1-90003.3" id="QQ2-1-9">Proof carrying code</a></span>
<br />  &#x00A0;<span class="sectionToc">3.4&#x00A0;&#x00A0;<a 
href="#x1-100003.4" id="QQ2-1-10">Bounds on restricted packet filters</a></span>
<br />  <span class="chapterToc">4&#x00A0;&#x00A0;<a 
href="#x1-110004" id="QQ2-1-11">Language definition</a></span>
<br />  &#x00A0;<span class="sectionToc">4.1&#x00A0;&#x00A0;<a 
href="#x1-120004.1" id="QQ2-1-12">Vocabulary and representation</a></span>
<br />  &#x00A0;<span class="sectionToc">4.2&#x00A0;&#x00A0;<a 
href="#x1-130004.2" id="QQ2-1-13">Declarations</a></span>
<br />  &#x00A0;<span class="sectionToc">4.3&#x00A0;&#x00A0;<a 
href="#x1-140004.3" id="QQ2-1-14">Types</a></span>
<br />  &#x00A0;<span class="sectionToc">4.4&#x00A0;&#x00A0;<a 
href="#x1-150004.4" id="QQ2-1-15">Expressions</a></span>
<br />  &#x00A0;<span class="sectionToc">4.5&#x00A0;&#x00A0;<a 
href="#x1-160004.5" id="QQ2-1-16">Operators</a></span>
<br />  &#x00A0;<span class="sectionToc">4.6&#x00A0;&#x00A0;<a 
href="#x1-170004.6" id="QQ2-1-17">The types of expressions</a></span>
<br />  &#x00A0;<span class="sectionToc">4.7&#x00A0;&#x00A0;<a 
href="#x1-180004.7" id="QQ2-1-18">Constant expressions</a></span>
<br />  &#x00A0;<span class="sectionToc">4.8&#x00A0;&#x00A0;<a 
href="#x1-190004.8" id="QQ2-1-19">Source files</a></span>
<br />  &#x00A0;<span class="sectionToc">4.9&#x00A0;&#x00A0;<a 
href="#x1-200004.9" id="QQ2-1-20">The filter function</a></span>
<br />  &#x00A0;<span class="sectionToc">4.10&#x00A0;&#x00A0;<a 
href="#x1-210004.10" id="QQ2-1-21">Preprocessor</a></span>
<br />  <span class="chapterToc">5&#x00A0;&#x00A0;<a 
href="#x1-220005" id="QQ2-1-22">The Piffle compiler, pfc</a></span>
<br />  &#x00A0;<span class="sectionToc">5.1&#x00A0;&#x00A0;<a 
href="#x1-230005.1" id="QQ2-1-23">The pfc(1) manual page</a></span>
<br />  <span class="chapterToc">6&#x00A0;&#x00A0;<a 
href="#x1-240006" id="QQ2-1-24">The pcap boilerplate, pcap.c</a></span>
<br />  &#x00A0;<span class="sectionToc">6.1&#x00A0;&#x00A0;<a 
href="#x1-250006.1" id="QQ2-1-25">The pfc.pcap(1) manual page</a></span>
<br />  &#x00A0;<span class="sectionToc">6.2&#x00A0;&#x00A0;<a 
href="#x1-260006.2" id="QQ2-1-26">Writing programs for the pcap.c boilerplate</a></span>
<br />  <span class="chapterToc">7&#x00A0;&#x00A0;<a 
href="#x1-270007" id="QQ2-1-27">The test boilerplate, test.c</a></span>
<br />  &#x00A0;<span class="sectionToc">7.1&#x00A0;&#x00A0;<a 
href="#x1-280007.1" id="QQ2-1-28">The pfc.test(1) manual page</a></span>
<br />  <span class="chapterToc">8&#x00A0;&#x00A0;<a 
href="#x1-290008" id="QQ2-1-29">An example of a packet filter</a></span>
<br />  &#x00A0;<span class="sectionToc">8.1&#x00A0;&#x00A0;<a 
href="#x1-300008.1" id="QQ2-1-30">A packet filter in PFL</a></span>
<br />  &#x00A0;<span class="sectionToc">8.2&#x00A0;&#x00A0;<a 
href="#x1-310008.2" id="QQ2-1-31">The packet filter translated to C by pfc</a></span>
  </div>

  <h2 class="chapterHead"><span class="titlemark">1</span>.&#x00A0;&#x00A0;<a 
 id="x1-20001"></a>Notices</h2>
  <h3 class="sectionHead"><span class="titlemark">1.1</span>.&#x00A0;&#x00A0;<a 
 id="x1-30001.1"></a>Latest version of this document</h3>
<!--l. 23--><p class="noindent">For up-to-date information on Piffle, and the latest version of this document, be sure to visit
the following web site:
<!--l. 26--><p class="indent">  <span 
class="cmti-12">http://code.google.com/p/piffle/wiki/PiffleWiki</span>
<!--l. 28--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">1.2</span>.&#x00A0;&#x00A0;<a 
 id="x1-40001.2"></a>Copyright notice</h3>
<!--l. 30--><p class="noindent">Copyright (c) 2007, Jaap Weel. This work is licensed under the Creative Commons
Attribution&#8211;Share-Alike 3.0 License. To view a copy of this license, visit
<!--l. 34--><p class="indent">  <span 
class="cmti-12">http://creativecommons.org/licenses/by-sa/3.0/</span>
<!--l. 36--><p class="indent">  or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco,
California, 94105, USA.

  <h2 class="chapterHead"><span class="titlemark">2</span>.&#x00A0;&#x00A0;<a 
 id="x1-50002"></a>Introduction</h2>
<!--l. 44--><p class="noindent">Piffle is a pronounceable form of PFL, that is, Packet Filter Language. (&#8220;Piffle&#8221; is also an
obscure word for &#8220;chatter&#8221;.) Piffle is a very simple programming language for writing network
packet filters, with one special feature: the compiler can enforce limits on the processor time
and memory used for processing each packet of input. This is accomplished by passing
arguments to the &#8211;C and &#8211;M command line options. Memory bounds are in words, more or
less, and CPU bounds are in arbitrary units.
<!--l. 53--><p class="indent">  In this document, I will first consider in general the problem of checking arbitrary programs
for transgression of such resource bounds, and notice that it is very hard. I will conclude that
in Piffle we must punt and restrict the class of programs that can be used as packet filters,
which makes the problem comparatively easy.
<!--l. 59--><p class="indent">  After that, I will give the definition of the Piffle language, and some instructions for how to
use the Piffle compiler.

  <h2 class="chapterHead"><span class="titlemark">3</span>.&#x00A0;&#x00A0;<a 
 id="x1-60003"></a>Bounded packet filters</h2>
<!--l. 65--><p class="noindent">An important requirement in designing network packet processing code is that the amount of
time and memory spent processing each packet be bounded. We do not want the entire
network connection grinding to a halt because of an unforeseen infinite loop in a packet filter.
There are several ways to prevent such havoc. In this chapter, I&#x00A0;will discuss each of them, and
explain which one I chose and why.
  <h3 class="sectionHead"><span class="titlemark">3.1</span>.&#x00A0;&#x00A0;<a 
 id="x1-70003.1"></a>Dynamic bounds on packet filters</h3>
<!--l. 74--><p class="noindent">We can check bounds at runtime. For instance, we can run the packet filter on each packet for
a specified quota of clock ticks and drop the packet if processing has not finished by the time
the quota runs out.
<!--l. 79--><p class="indent">  One problem with this runtime approach is that a bug in the packet filters can
remain hidden for a long time until some unusual packet is received that triggers the
bug.
<!--l. 83--><p class="indent">  Another problem is that it is not clear exactly what to do when the bound is exceeded:
Should we drop the packet? Should we pass it along unaltered? We would like to be able to
give the packet filter author the opportunity to decide what to do with packets that take too
long to analyze. But if we allow that sort of flexibility within the dynamic checking framework,
we will inevitably have to allow a chunk of cleanup code to deal with &#8220;slow&#8221; packets, which
in turn can only run for a restricted amount of time. If <span 
class="cmti-12">that </span>time is exceeded, do
we need a third program to deal with slow packet filters that have slow cleanup
code?
<!--l. 94--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">3.2</span>.&#x00A0;&#x00A0;<a 
 id="x1-80003.2"></a>Static bounds on arbitrary packet filters</h3>
<!--l. 96--><p class="noindent">Given the problems with checking bounds at run time, we might want to check at compile
time. To do that, we need a language in which we can express exactly those packet filter
programs that execute within given time and space bounds.
<!--l. 101--><p class="indent">  Determining whether a given program runs within these bounds sounds like it ought to be
undecidable, but it is not. After all, we are not trying to evaluate whether a given packet filter
will terminate <span 
class="cmti-12">at all, in the end</span>; we merely want it to terminate within a given number of
steps. (The space bound problem is analogous.)
<!--l. 107--><p class="indent">  The problem of determining whether a given Turing machine will terminate within a certain
number of steps is, in fact, decidable. In a limited number <span 
class="cmmi-12">N </span>of steps the machine can read
only a limited amount <span 
class="cmmi-12">N </span>of its tape, which means we could check whether the time bound by
exhaustively running the machine for at most <span 
class="cmmi-12">N </span>steps on all tapes of length at most
<span 
class="cmmi-12">N</span>.
<!--l. 114--><p class="indent">  It should be obvious that this procedure, while quite satisfactory as a constructive proof of
decidability, is impractical, because the process of bounds checking itself would take lots of
time (in fact, exponential in <span 
class="cmmi-12">N</span>). What we need is a bound on the process of bounds

checking.
<!--l. 120--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">3.3</span>.&#x00A0;&#x00A0;<a 
 id="x1-90003.3"></a>Proof carrying code</h3>
<!--l. 122--><p class="noindent">One way to design a language that would let us check bounds at compile time would be to
annotate the program with a proof of the statement that it will terminate within a given
number of steps.
<!--l. 126--><p class="indent">  Proofs could be provided either as annotations or as part of a type
system.<span class="footnote-mark"><a 
href="piffle2.html#fn1x5"><sup class="textsuperscript">1</sup></a></span><a 
 id="x1-9001f1"></a>
The use of proof carrying code would allow all packet filters to be written that can be
proven to execute within bounds, and it would allow for the bounds checking problem
itself to be tractable. Depending on the details of the formal system used, proof
(or type) checking can be polynomial (and often linear) in the length of the proof.
Therefore, bound checking of annotated code complies with the rule of thumb that
compilers should use only algorithms that are at most polynomial in the length of the
program.
<!--l. 137--><p class="indent">  The practical liabilities of proof carrying code are well known. Programmers are unfamiliar
with proof systems, and those who know their way around them could still have trouble
coming up with the (possibly lengthy) proofs in individual cases. Therefore, we
will not pursue proof carrying code any further now, and turn instead to a simpler
solution.
<!--l. 144--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">3.4</span>.&#x00A0;&#x00A0;<a 
 id="x1-100003.4"></a>Bounds on restricted packet filters</h3>
<!--l. 146--><p class="noindent">If we do not want to get bogged down in the depths of formal type theory, but still design a
language that would let us check bounds at compile time, we arrive at what is, in fact, the
traditional solution to the problem of bounded packet filters. We will construct a programming
language out of familiar abstractions, and that language will allow us to express a
<span 
class="cmti-12">large but arbitrary </span>subset of the set of all packet filters that execute in bounded
time.
<!--l. 154--><p class="indent">  Such a language is not Turing complete, but if it is designed intelligently, it can
cover a large fraction of the problems that people may want to solve using packet
filters.
<!--l. 158--><p class="indent">  An example of a packet filter language based on familiar programming abstractions is the traditional BSD

packet filter <span 
class="cmti-12">bpf</span>.<span class="footnote-mark"><a 
href="piffle3.html#fn2x5"><sup class="textsuperscript">2</sup></a></span><a 
 id="x1-10001f2"></a>
Its packet filters are written in a simple machine code with a little twist: the virtual machine
allows jumps forward, but not backward. That way, the time spent executing any given packet
filter program is at most proportional to the length of the program.
<!--l. 167--><p class="indent">  For Piffle, we take a similar approach. Piffle is not based on machine language, but on block
structured, procedural programming languages such as C and Pascal. Just as the <span 
class="cmti-12">bpf </span>language
omits backward jumps from machine code, Piffle omits unbounded looping constructs and
recursive procedure calls from block structured, procedural code. Piffle does provide some
bounded looping constructs, and procedure calls are allowed as long as the call graph contains
no cycles.

  <h2 class="chapterHead"><span class="titlemark">4</span>.&#x00A0;&#x00A0;<a 
 id="x1-110004"></a>Language definition</h2>
<!--l. 193--><p class="noindent">The Piffle language is defined as a set of sentences, called source files, well formed according to
the Piffle syntax. To describe the syntax, I will use a modified version of the Backus Normal
Form (also known as Backus-Naur Formalism or BNF), using <span 
class="cmmi-12">x</span><sup><span 
class="cmr-8">?</span></sup> to indicate that <span 
class="cmmi-12">x</span>
may appear either once or not at all, <span 
class="cmmi-12">x</span><sup><span 
class="cmr-8">+</span></sup> to indicate that <span 
class="cmmi-12">x </span>may appear at least
once, and <span 
class="cmmi-12">x</span><sup><span 
class="cmsy-8">*</span></sup> to indicate that <span 
class="cmmi-12">x </span>may appear any number of times, including not at
all.
<!--l. 201--><p class="indent">  I will not provide a formal definition of the semantics of Piffle. In general, when I do not
specify the meaning or type of some Piffle construct, it can be assumed that it is analogous to
the semantics of its closest analog in C.
  <h3 class="sectionHead"><span class="titlemark">4.1</span>.&#x00A0;&#x00A0;<a 
 id="x1-120004.1"></a>Vocabulary and representation</h3>
<!--l. 208--><p class="noindent">A well formed Piffle program is composed of tokens, which are identifiers, literals, and reserved
tokens. Each token is a sequence of characters, and may not contain whitespace unless this is
explicitly specified. Any amount of whitespace may be inserted between tokens, and indeed
must be inserted between any two tokens that would make a valid token when put
together.
<!--l. 215--><p class="indent">  Whitespace is any sequence of blanks, tabs, vertical tabs, form feeds, line feeds, and carriage
returns (in C notation, any character in the string <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">"</span><span 
class="cmtt-12">&#x00A0;\v\f\t\r\n"</span></span></span>). Comments may also
appear wherever whitespace can appear. (Unlike in C, they may <span 
class="cmti-12">not </span>appear inside of a token.)
In-line comments may be inserted between any two tokens. They are delimited by <span 
class="cmtt-12">/* </span>and <span 
class="cmtt-12">*/</span>
and may be nested. End-of-line comments may also be inserted between any two tokens,
and they run from <span 
class="cmtt-12">// </span>to the next line end, or the end of the file, whichever comes
first.
<!--l. 225--><p class="indent">  Identifiers are sequences of letters, digits, and underscores. The first character may not be a
digit. <div class="eqnarray">
  <center class="math-display" >
<img 
src="piffle0x.png" alt="                    |--|          |-|        *
ident  =   (-letter |-x-)|(letter |-x-|-digit)
letter  =   |A || &#x22C5;&#x22C5;&#x22C5; ||Z|| a || &#x22C5;&#x22C5;&#x22C5; | z|
           |--|      |--|  ---       ---
 digit  =   |0 || &#x22C5;&#x22C5;&#x22C5; ||9|
           ---       ---
" class="math-display" ></center>
</div>
<!--l. 235--><p class="indent">  The literals available in Piffle, are numbers, the <span 
class="cmtt-12">unit </span>literal, which is the canonical value of
type <span 
class="cmtt-12">void</span>, <span 
class="cmtt-12">true</span>, which means the same as <span 
class="cmtt-12">1 :</span><span 
class="cmtt-12">&#x00A0;bool</span>, and <span 
class="cmtt-12">false</span>, which means the same as <span 
class="cmtt-12">0</span>

<span 
class="cmtt-12">:</span><span 
class="cmtt-12">&#x00A0;bool</span>. The only numbers available are integers. They can be represented as decimal, octal,
or hexidecimal, the same way as in Haskell 98. Note that this differs from C syntax in that
leading 0s are simply ignored, and the prefix for octal is 0o or 0O rather than simply
0.
<!--l. 253--><p class="indent">  <div class="eqnarray">
  <center class="math-display" >
<img 
src="piffle1x.png" alt="              |----|- |-----|  |------|
 literal  =    unit---|-true--|-false---| integer|  |--|
integer  =   digit+ | ( 0o|| |0O ) octit+| ( 0x || |0X|) hexit+
              |-|      |--|  |-|-      |-|  |-|--  ---|-|
  hexit  =    0 || &#x22C5;&#x22C5;&#x22C5; ||9|| A || &#x22C5; &#x22C5;&#x22C5; | F|| a|| &#x22C5;&#x22C5;&#x22C5; | f|
              |-|      |--|  ---       ---  ---       ---
   octit  =    0--| &#x22C5;&#x22C5;&#x22C5; |-7|
" class="math-display" ></center>
</div>
<!--l. 255--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">4.2</span>.&#x00A0;&#x00A0;<a 
 id="x1-130004.2"></a>Declarations</h3>
<!--l. 257--><p class="noindent">Piffle allows no recursion, and all functions must be defined before they are used. Therefore,
there is no need for forward declarations. If the return type of a function is omitted, <span 
class="cmtt-12">void </span>is
implied. The meaning of duplicate definitions is undefined.
<!--l. 270--><p class="indent">  <div class="eqnarray">
  <center class="math-display" >
<img 
src="piffle2x.png" alt="declaration   =   vardec | fundec
                 |----|      |-|
     vardec  =   |var-|ident |:|type  |-|  |-|        |-|
    fundec   =   |fun |ident |(|argl? |)| (|:| type )? = |expression
                 ----- |-|   --- |-|  --- |-|-        ---
       argl  =   ident :--type ( ,--ident -:- type )*
" class="math-display" ></center>
</div>
<!--l. 272--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">4.3</span>.&#x00A0;&#x00A0;<a 
 id="x1-140004.3"></a>Types</h3>
<!--l. 274--><p class="noindent">A type in Piffle is <span 
class="cmtt-12">void</span>, an atomic type, or an array. Atomic types come in signed and
unsigned, and have 8, 16, or 32 bits. Each array type encompasses only arrays of a specific
length; you can declare an &#8220;array of 1024 integers&#8221;, but not an &#8220;array of integers&#8221;. This is an
important feature, because it is what enables the calculation of resource limits. It is
at present <span 
class="cmti-12">not </span>actually used for anything else; in particular, there are no bounds
checks.
<!--l. 290--><p class="indent">  <div class="eqnarray">
  <center class="math-display" >
<img 
src="piffle3x.png" alt="             |-----|                 |--|        |-|
  type  =    void---| atomic | atomic-[-|integer ]--
             |-----| |---|  |---|  |----|  |--|  |----| |----|
atomic   =    bool---|-u8-|| u16-- |-u32-|| s8--| -s16-||-s32-|
" class="math-display" ></center>
</div>
<!--l. 292--><p class="indent">  Whenever a value of type of void is expected, a value of any other type will do as
well.
<!--l. 295--><p class="noindent">

  <h3 class="sectionHead"><span class="titlemark">4.4</span>.&#x00A0;&#x00A0;<a 
 id="x1-150004.4"></a>Expressions</h3>
<!--l. 297--><p class="noindent">Unlike in C or Pascal, in Piffle there is no syntactic distinction between expressions and
statements; every expression can be used as a statement and vice versa.
<!--l. 327--><p class="indent">  <div class="eqnarray">
  <center class="math-display" >
<img 
src="piffle4x.png" alt="                                                  *
 expression   =   expression2  (binop expression2 )  |--|    |-|
expression2   =   unop *expression3 ( [--expression -]-) ? ( :-atomic )?

expression3   =   literal |--|              |-|               |--|
              |   ident  (-(-|(expression ( ,--expression) *)?-)-) ?
                  |-|           |--|
              |   -(-expression -)-|                       ---
                  | |              |-| *             |-| * | |
              |   |{--(declaration |;--)-( expression  ;--)--}--
              |   |if |expression  then  |expression  (|else |expression )?
                  |----|      |--|-------      |------|-----        |---|
              |   -for-|ident in--expression ( -while--expression) ?-do-|expression
                  |----|      |-----|       |---|
              |   -for-|ident from---integer -to-|integer
                   |-------|           ? |--|
                  (-while--|expression )  do--expression
" class="math-display" ></center>
</div>
<!--l. 329--><p class="indent">  Cast expressions (like <span 
class="cmtt-12">x : u32</span>) allow the use of a value of one atomic type with another
atomic type. The exact meaning of such conversions is undefined but expected to correspond
to the behavior of the C compiler on the platform in use.
<!--l. 334--><p class="indent">  Blocks have the value of the last expression in them (which is why there is no <span 
class="cmtt-12">return</span>
statement); if a block contains no expressions, <span 
class="cmtt-12">unit </span>is implied.
<!--l. 338--><p class="indent">  If-then-else statements have values, and correspond more closely to the C ternary
operator (<span 
class="cmtt-12">?:</span>) than to the C if-else statement. If an <span 
class="cmtt-12">else </span>clause is omitted, <span 
class="cmtt-12">unit </span>is
implied.
<!--l. 342--><p class="indent">  Loops in Piffle are somewhat peculiar, in order to accommodate resource bound checking.
There are two types of loops: one will iterate with a variable sequentially bound to each
number in a range (which includes both bounds), and the other will iterate with a
variable sequentially bound to each element in an array. Both allow the use of a <span 
class="cmtt-12">while</span>
clause, which will be evaluated before each iteration; if it evaluates to 0, the loop is
aborted immediately. The iterator variable is bound within the while clause, so it is
perfectly valid to say something like <span 
class="cmtt-12">for i from 0 to 10 while is</span><span 
class="cmtt-12">_useful(i) do</span>

<span 
class="cmtt-12">...</span>.
<!--l. 354--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">4.5</span>.&#x00A0;&#x00A0;<a 
 id="x1-160004.5"></a>Operators</h3>
<!--l. 356--><p class="noindent">The operators are given by <div class="eqnarray">
  <center class="math-display" >
<img 
src="piffle5x.png" alt="           |--|  |-|  |-|  |-|  |-|  |---| |---|  |-|
binop   =   |*-|| /--| %|-||+-||----|--&#x003C;&#x003C;-||-&#x003E;&#x003E;-|||&#x003C;--
        |  |&#x003E; || &#x003C;= || &#x003E;= | ||== |||!= || &amp; || |^|
           |--|  |--|  |--|  |--| |---|  |--|  |--|
        |  -|-|| &amp;&amp;--| |-|- |-=-||-+=-|| -=--| -*=-
           |---|  |--|  |---| |---|  |--|  |----| |----|
        |  -%=-|| /=--| -|=-||-&amp;=-|| ^=--| -&#x003E;&#x003E;=-||-&#x003C;&#x003C;=-|
           |--|  |-|  |-|  |-|
unop   =   -+-|| ---| ~--| !--
" class="math-display" ></center>
</div>
<!--l. 370--><p class="indent">  The grammar as specified so far correctly and completely specifies the language, but it is
misleading and ambiguous, because it does not indicate the meaning of certain compound
expressions. In fact, the actual Piffle parser will respect the standard C precedence rules, as
summarized in the following table.
  <div class="tabular"><table class="tabular" 
cellspacing="0" cellpadding="0"  
><colgroup id="TBL-2-1g"><col 
id="TBL-2-1"><col 
id="TBL-2-2"></colgroup><tr 
class="hline"><td><hr></td><td><hr></td></tr><tr 
class="hline"><td><hr></td><td><hr></td></tr><tr  
 style="vertical-align:baseline;" id="TBL-2-1-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-1"  
class="td11">Operators (ordered from tight to loose)          </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-1-2"  
class="td11">Associativity</td>
</tr><tr 
class="hline"><td><hr></td><td><hr></td></tr><tr  
 style="vertical-align:baseline;" id="TBL-2-2-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-1"  
class="td11"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">*</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">/</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">%</span></span></span>                                 </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-2-2"  
class="td11">left-to-right  </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-2-3-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-1"  
class="td11"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">+</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">-</span></span></span>                                    </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-3-2"  
class="td11">left-to-right  </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-2-4-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-1"  
class="td11"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">&#x003C;&#x003C;</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">&#x003E;&#x003E;</span></span></span>                                  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-4-2"  
class="td11">left-to-right  </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-2-5-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-1"  
class="td11"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">&#x003C;</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">&#x003E;</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">&#x003C;=</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">&#x003E;=</span></span></span>                            </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-5-2"  
class="td11">left-to-right  </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-2-6-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-1"  
class="td11"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">==</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">!=</span></span></span>                                  </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-6-2"  
class="td11">left-to-right  </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-2-7-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-1"  
class="td11"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">&amp;</span></span></span>                                      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-7-2"  
class="td11">left-to-right  </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-2-8-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-1"  
class="td11"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">^</span></span></span>                                      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-8-2"  
class="td11">left-to-right  </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-2-9-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-1"  
class="td11"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">|</span></span></span>                                      </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-9-2"  
class="td11">left-to-right  </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-2-10-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-1"  
class="td11"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">&amp;&amp;</span></span></span>                                     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-10-2"  
class="td11">left-to-right  </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-2-11-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-1"  
class="td11"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">||</span></span></span>                                     </td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-11-2"  
class="td11">left-to-right  </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-2-12-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-1"  
class="td11"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">=</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">+=</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">-=</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">*=</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">%=</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">/=</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">|=</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">&amp;=</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">^=</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">&#x003E;&#x003E;=</span></span></span>  <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">&#x003C;&#x003C;=</span></span></span></td><td  style="white-space:nowrap; text-align:left;" id="TBL-2-12-2"  
class="td11">right-to-left  </td>
</tr><tr 
class="hline"><td><hr></td><td><hr></td></tr><tr 
class="hline"><td><hr></td><td><hr></td></tr><tr  
 style="vertical-align:baseline;" id="TBL-2-13-"><td  style="white-space:nowrap; text-align:left;" id="TBL-2-13-1"  
class="td11">                                                              </td> </tr></table>

</div>
<!--l. 399--><p class="indent">  The keywords have the loosest possible preference, and thus the expressions at the end of <span 
class="cmtt-12">if</span>
and <span 
class="cmtt-12">for </span>expressions extend to the right as far as possible.
<!--l. 403--><p class="indent">  Even though any expression may be used, according to the grammar, as the left-hand side
of an assignment, assignment is only a meaningful operation when the left-hand side is an
&#8220;lvalue&#8221; of the form  <span 
class="cmti-12">ident</span> ( <span class="fbox"><span 
class="cmtt-12">[</span></span> <span 
class="cmti-12">expression</span> <span class="fbox"><span 
class="cmtt-12">]</span></span> ) <sup><span 
class="cmr-8">?</span></sup>.
<!--l. 408--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">4.6</span>.&#x00A0;&#x00A0;<a 
 id="x1-170004.6"></a>The types of expressions</h3>
<!--l. 410--><p class="noindent">The binary operators <span 
class="cmtt-12">*</span>, <span 
class="cmtt-12">/</span>, <span 
class="cmtt-12">%</span>, <span 
class="cmtt-12">+</span>, <span 
class="cmtt-12">-</span>, <span 
class="cmtt-12">&amp;</span>, <span 
class="cmtt-12">|</span>, <span 
class="cmtt-12">^</span>, <span 
class="cmtt-12">=</span>, <span 
class="cmtt-12">*=</span>, <span 
class="cmtt-12">/=</span>, <span 
class="cmtt-12">%=</span>, <span 
class="cmtt-12">+=</span>, <span 
class="cmtt-12">-=</span>, <span 
class="cmtt-12">&amp;=</span>, <span 
class="cmtt-12">|=</span>, <span 
class="cmtt-12">^=</span>, all take
two operands of the same, atomic, type, and return a value of that type, that is,
formally,
  <center class="math-display" >
<img 
src="piffle6x.png" alt="*, /,%,+,-,&amp;,| ,^,=,*=,...,^=  : &#x2200;&#x03C4; &#x2208; {bool, u8,u16, u32,s8, s16,s32 }. &#x03C4; &#x00D7; &#x03C4; &#x2192; &#x03C4; .
" class="math-display" ></center>
<!--l. 420--><p class="nopar"> The unary operators <span 
class="cmtt-12">+</span>, <span 
class="cmtt-12">-</span>, and <span 
class="cmtt-12">~ </span>all take one operand of any integer type and return a value
of that type, that is, formally,
  <center class="math-display" >
<img 
src="piffle7x.png" alt="+,- ,~ : &#x2200;&#x03C4; &#x2208; {bool, u8,u16, u32,s8, s16,s32 }. &#x03C4; &#x2192;  &#x03C4; .
" class="math-display" ></center>
<!--l. 426--><p class="nopar"> The binary operators <span 
class="cmtt-12">&#x003C;</span>, <span 
class="cmtt-12">&#x003E;</span>, <span 
class="cmtt-12">&#x003C;=</span>, <span 
class="cmtt-12">&#x003E;=</span>, <span 
class="cmtt-12">==</span>, <span 
class="cmtt-12">!=</span>, <span 
class="cmtt-12">&amp;&amp;</span>, and <span 
class="cmtt-12">|| </span>all take two operands of arbitrary
atomic types, and return a value of type <span 
class="cmtt-12">bool</span>, that is, formally
  <center class="math-display" >
<img 
src="piffle8x.png" alt="&#x003C;, &#x003E;,&#x003C;=,&#x003E;=, ==,!=,&amp;&amp;, || : &#x2200;&#x03C4;,&#x03C5; &#x2208; {bool, u8, u16,u32, s8,s16,s32 }. &#x03C4; &#x00D7; &#x03C5; &#x2192;  bool .
" class="math-display" ></center>
<!--l. 436--><p class="nopar"> The unary operator <span 
class="cmtt-12">! </span>takes one operand of any integer types and returns a value of type
<span 
class="cmtt-12">bool</span>, that is, formally,
  <center class="math-display" >
<img 
src="piffle9x.png" alt="! : &#x2200;&#x03C4; &#x2208; {bool, u8,u16, u32,s8, s16,s32 }. &#x03C4; &#x2192;  bool .
" class="math-display" ></center>

<!--l. 442--><p class="nopar"> For the binary operators <span 
class="cmtt-12">&#x003C;&#x003C;</span>, <span 
class="cmtt-12">&#x003E;&#x003E;</span>, <span 
class="cmtt-12">&#x003C;&#x003C;=</span>, and <span 
class="cmtt-12">&#x003E;&#x003E;=</span>, the value being shifted and the value
indicating the number of bits to shift need not be of the same type, but both types
must be atomic, and the entire expression gets the type of the value being shifted.
Formally,
  <center class="math-display" >
<img 
src="piffle10x.png" alt="&#x003C;&#x003C;,&#x003E;&#x003E;,&#x003C;&#x003C;=, &#x003E;&#x003E;= : &#x2200;&#x03C3;, &#x03C4; &#x2208; {bool, u8,u16,u32, s8,s16, s32}. &#x03C4; &#x00D7; &#x03C3; &#x2192;  &#x03C4; .
" class="math-display" ></center>
<!--l. 451--><p class="nopar">
<!--l. 453--><p class="indent">  A sequence <span 
class="cmsy-10x-x-120">{</span><span 
class="cmtt-12">...</span><span 
class="cmsy-10x-x-120">} </span>of expressions has the value and type of the last expression in the
sequence, or <span 
class="cmtt-12">void </span>if there are no expressions. All expressions preceding the last are
expected to have type <span 
class="cmtt-12">void</span>, but as stated above, any other type will do when <span 
class="cmtt-12">void </span>is
expected.
<!--l. 459--><p class="indent">  An <span 
class="cmtt-12">if </span>expression consists of a condition, a consequent, and an optional alternative. If the
alternative is omitted, <span 
class="cmtt-12">unit </span>is implied. The condition may be of any atomic type. The types of
the consequent and the alternative must match, but note again that because any type can be
used instead of <span 
class="cmtt-12">void</span>, if the type of either branch is <span 
class="cmtt-12">void</span>, the other branch can have any type.
The alternative is evaluated only if the condition evaluates to <span 
class="cmtt-12">0</span>; otherwise, the consequent is
evaluated. In either case, the entire expression gets the value of the evaluated clause. To
clarify:

  <table 
class="verbatim"><tr class="verbatim"><td 
class="verbatim"><div class="verbatim">
fun&#x00A0;frob&#x00A0;()&#x00A0;:&#x00A0;void&#x00A0;=&#x00A0;{
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;var&#x00A0;x,&#x00A0;y&#x00A0;:&#x00A0;u32;
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;3&#x00A0;&#x003C;&#x00A0;5&#x00A0;then&#x00A0;do_something();&#x00A0;&#x00A0;/*&#x00A0;do_something()&#x00A0;is&#x00A0;executed&#x00A0;*/
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;x&#x00A0;=&#x00A0;if&#x00A0;3&#x00A0;&#x003C;&#x00A0;5&#x00A0;then&#x00A0;0&#x00A0;else&#x00A0;1;&#x00A0;&#x00A0;&#x00A0;&#x00A0;/*&#x00A0;x&#x00A0;is&#x00A0;set&#x00A0;to&#x00A0;0&#x00A0;*/
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;x&#x00A0;=&#x00A0;if&#x00A0;3&#x00A0;&#x003E;&#x00A0;5&#x00A0;then&#x00A0;0&#x00A0;else&#x00A0;1;&#x00A0;&#x00A0;&#x00A0;&#x00A0;/*&#x00A0;x&#x00A0;is&#x00A0;set&#x00A0;to&#x00A0;1&#x00A0;*/
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;y&#x00A0;=&#x00A0;if&#x00A0;3&#x00A0;&#x003C;&#x00A0;5&#x00A0;then&#x00A0;0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;/*&#x00A0;This&#x00A0;won&#8217;t&#x00A0;type&#x00A0;check!!&#x00A0;*/
&#x00A0;<br />};
</div>
</td></tr></table>
<!--l. 476--><p class="nopar">
<!--l. 478--><p class="indent">  There are two iteration constructs in Piffle. Both are different from iteration constructs in
comparable languages because of the need for computing resource bounds.
<!--l. 482--><p class="indent">  An expression of the form
  <center class="math-display" >
<img 
src="piffle11x.png" alt="|---|  |---|   |------|  ? |--|
for--&#x03B1; -in-&#x03B2; ( -while--&#x03B3;)  do--&#x03B4;
" class="math-display" ></center>
<!--l. 483--><p class="nopar"> has type <span 
class="cmtt-12">void</span>. The range <span 
class="cmmi-12">&#x03B2; </span>must be of type <span 
class="cmtt-12">array </span><span 
class="cmmi-12">i &#x03C4;</span>, for some integer <span 
class="cmmi-12">i </span>and some atomic
type <span 
class="cmmi-12">&#x03C4;</span>, and the variable <span 
class="cmmi-12">&#x03B1; </span>will be of type <span 
class="cmmi-12">&#x03C4; </span>and scope over <span 
class="cmmi-12">&#x03B3; </span>and <span 
class="cmmi-12">&#x03B4;</span>. The condition <span 
class="cmmi-12">&#x03B3; </span>may
have any atomic type, and the body <span 
class="cmmi-12">&#x03B4; </span>must be of type <span 
class="cmtt-12">void </span>(with any other type
allowed).
<!--l. 491--><p class="indent">  An expression of the form
  <center class="math-display" >
<img 
src="piffle12x.png" alt="|----|  |-----|  |---|    |------|  ? |--|
-for-|&#x03B1; -from--&#x03B2;0-to-|&#x03B2;1 (-while--&#x03B3;)  -do-&#x03B4;
" class="math-display" ></center>
<!--l. 492--><p class="nopar"> has type <span 
class="cmtt-12">void</span>. The bounds <span 
class="cmmi-12">&#x03B2;</span><sub><span 
class="cmr-8">0</span><span 
class="cmmi-8">,</span><span 
class="cmr-8">1</span></sub> must be constant expressions of any atomic type, and <span 
class="cmmi-12">&#x03B1; </span>will
be of type <span 
class="cmtt-12">u32 </span>and scope over <span 
class="cmmi-12">&#x03B3; </span>and <span 
class="cmmi-12">&#x03B4;</span>. The condition <span 
class="cmmi-12">&#x03B3; </span>may have any atomic type, and the
body <span 
class="cmmi-12">&#x03B4; </span>must be of type <span 
class="cmtt-12">void </span>(with any other type allowed).
<!--l. 499--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">4.7</span>.&#x00A0;&#x00A0;<a 
 id="x1-180004.7"></a>Constant expressions</h3>
<!--l. 501--><p class="noindent">Integer literals are assigned a special type (<span 
class="cmtt-12">sliteral</span>) by the compiler. This type is considered
atomic, and values of type <span 
class="cmtt-12">sliteral </span>can always be used when any atomic type is
expected.

<!--l. 506--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">4.8</span>.&#x00A0;&#x00A0;<a 
 id="x1-190004.8"></a>Source files</h3>
<!--l. 508--><p class="noindent">A source file consists of a number of declarations separated by semicolons.
<!--l. 513--><p class="indent">  <div class="eqnarray">
  <center class="math-display" >
<img 
src="piffle13x.png" alt="                      |--|
file  =   ( declaration |; ) *
                      ---
" class="math-display" ></center>
</div>
<!--l. 515--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">4.9</span>.&#x00A0;&#x00A0;<a 
 id="x1-200004.9"></a>The filter function</h3>
<!--l. 517--><p class="noindent">The function named <span 
class="cmtt-12">filter </span>has a special meaning. It is used as the root of the call graph
(which is actually a tree, in the Piffle case) by the compiler when checking for memory
and CPU usage bounds. It is also the function that gets called on every incoming
packet.
<!--l. 522--><p class="indent">  Strictly speaking, this is dependent on which boilerplate is being used. Boilerplates are a
concept we will get to in the chapter about the compiler, but rest assured that all
currently available boilerplates will cause <span 
class="cmtt-12">filter </span>to be called on each incoming
packet.
<!--l. 529--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">4.10</span>.&#x00A0;&#x00A0;<a 
 id="x1-210004.10"></a>Preprocessor</h3>
<!--l. 531--><p class="noindent">It should be possible to run a Piffle program through a regular C preprocessor (cpp). This is
not done by default; you would have to do it manually. Also make sure not to use nested
comments if you want to use cpp. The compiler does not interpret cpp line directives, so any
error messages you get about preprocessed code will refer to positions in the preprocessed
source.


  <h2 class="chapterHead"><span class="titlemark">5</span>.&#x00A0;&#x00A0;<a 
 id="x1-220005"></a>The Piffle compiler, pfc</h2>
<!--l. 540--><p class="noindent">The Piffle compiler, pfc, is a fairly simple compiler, written in the Haskell programming language,
that outputs C code. It is documented in the pfc(1) man page, which is reproduced here in its
entirety.<span class="footnote-mark"><a 
href="piffle4.html#fn1x7"><sup class="textsuperscript">1</sup></a></span><a 
 id="x1-22001f1"></a>
  <h3 class="sectionHead"><span class="titlemark">5.1</span>.&#x00A0;&#x00A0;<a 
 id="x1-230005.1"></a>The pfc(1) manual page</h3>
<!--l. 550--><p class="noindent">
  <div class="fancyvrb" id="fancyvrb1">
<a 
 id="x1-23002r1"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;PFC(1)</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;PFC(1)</span>
<br class="fancyvrb" /><a 
 id="x1-23004r2"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23006r3"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23008r4"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23010r5"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;NAME</span>
<br class="fancyvrb" /><a 
 id="x1-23012r6"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc</span><span 
class="cmtt-10">&#x00A0;-</span><span 
class="cmtt-10">&#x00A0;Piffle</span><span 
class="cmtt-10">&#x00A0;Compiler</span>
<br class="fancyvrb" /><a 
 id="x1-23014r7"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23016r8"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;SYNOPSIS</span>
<br class="fancyvrb" /><a 
 id="x1-23018r9"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc</span><span 
class="cmtt-10">&#x00A0;[OPTIONS]</span><span 
class="cmtt-10">&#x00A0;file.pfl</span>
<br class="fancyvrb" /><a 
 id="x1-23020r10"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23022r11"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;INTRODUCTION</span>
<br class="fancyvrb" /><a 
 id="x1-23024r12"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Piffle</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;pronounceable</span><span 
class="cmtt-10">&#x00A0;form</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;PFL,</span><span 
class="cmtt-10">&#x00A0;that</span><span 
class="cmtt-10">&#x00A0;is,</span><span 
class="cmtt-10">&#x00A0;Packet</span><span 
class="cmtt-10">&#x00A0;Filter</span><span 
class="cmtt-10">&#x00A0;Language.</span>
<br class="fancyvrb" /><a 
 id="x1-23026r13"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Piffle</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;very</span><span 
class="cmtt-10">&#x00A0;simple</span><span 
class="cmtt-10">&#x00A0;programming</span><span 
class="cmtt-10">&#x00A0;language</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;writing</span><span 
class="cmtt-10">&#x00A0;network</span><span 
class="cmtt-10">&#x00A0;packet</span>
<br class="fancyvrb" /><a 
 id="x1-23028r14"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;filters,</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;with</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;one</span><span 
class="cmtt-10">&#x00A0;special</span><span 
class="cmtt-10">&#x00A0;feature:</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;compiler</span><span 
class="cmtt-10">&#x00A0;can</span><span 
class="cmtt-10">&#x00A0;enforce</span><span 
class="cmtt-10">&#x00A0;limits</span><span 
class="cmtt-10">&#x00A0;on</span>
<br class="fancyvrb" /><a 
 id="x1-23030r15"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;processor</span><span 
class="cmtt-10">&#x00A0;time</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;memory</span><span 
class="cmtt-10">&#x00A0;used</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;processing</span><span 
class="cmtt-10">&#x00A0;each</span><span 
class="cmtt-10">&#x00A0;packet</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;input.</span>
<br class="fancyvrb" /><a 
 id="x1-23032r16"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;This</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;accomplished</span><span 
class="cmtt-10">&#x00A0;by</span><span 
class="cmtt-10">&#x00A0;passing</span><span 
class="cmtt-10">&#x00A0;arguments</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;-C</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;-M</span><span 
class="cmtt-10">&#x00A0;command</span><span 
class="cmtt-10">&#x00A0;line</span>
<br class="fancyvrb" /><a 
 id="x1-23034r17"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;options.</span><span 
class="cmtt-10">&#x00A0;Memory</span><span 
class="cmtt-10">&#x00A0;bounds</span><span 
class="cmtt-10">&#x00A0;are</span><span 
class="cmtt-10">&#x00A0;in</span><span 
class="cmtt-10">&#x00A0;words,</span><span 
class="cmtt-10">&#x00A0;more</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;less,</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;CPU</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;bounds</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;are</span>
<br class="fancyvrb" /><a 
 id="x1-23036r18"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;in</span><span 
class="cmtt-10">&#x00A0;arbitrary</span><span 
class="cmtt-10">&#x00A0;units.</span>
<br class="fancyvrb" /><a 
 id="x1-23038r19"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23040r20"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;DESCRIPTION</span>
<br class="fancyvrb" /><a 
 id="x1-23042r21"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;compiler</span><span 
class="cmtt-10">&#x00A0;that</span><span 
class="cmtt-10">&#x00A0;compiles</span><span 
class="cmtt-10">&#x00A0;programs</span><span 
class="cmtt-10">&#x00A0;written</span><span 
class="cmtt-10">&#x00A0;in</span><span 
class="cmtt-10">&#x00A0;Piffle.</span><span 
class="cmtt-10">&#x00A0;It</span><span 
class="cmtt-10">&#x00A0;produces</span>
<br class="fancyvrb" /><a 
 id="x1-23044r22"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;C</span><span 
class="cmtt-10">&#x00A0;file,</span><span 
class="cmtt-10">&#x00A0;which</span><span 
class="cmtt-10">&#x00A0;must</span><span 
class="cmtt-10">&#x00A0;be</span><span 
class="cmtt-10">&#x00A0;further</span><span 
class="cmtt-10">&#x00A0;processed</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;with</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;GNU</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;C</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;compiler.</span>
<br class="fancyvrb" /><a 
 id="x1-23046r23"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Typically,</span><span 
class="cmtt-10">&#x00A0;you</span><span 
class="cmtt-10">&#x00A0;would</span><span 
class="cmtt-10">&#x00A0;use</span><span 
class="cmtt-10">&#x00A0;pfc</span><span 
class="cmtt-10">&#x00A0;like</span><span 
class="cmtt-10">&#x00A0;this:</span>
<br class="fancyvrb" /><a 
 id="x1-23048r24"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23050r25"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc</span><span 
class="cmtt-10">&#x00A0;-Bpcap.c</span><span 
class="cmtt-10">&#x00A0;foo.pfl</span>
<br class="fancyvrb" /><a 
 id="x1-23052r26"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23054r27"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;That</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;would</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;compile</span><span 
class="cmtt-10">&#x00A0;foo.pfl</span><span 
class="cmtt-10">&#x00A0;into</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;new</span><span 
class="cmtt-10">&#x00A0;file</span><span 
class="cmtt-10">&#x00A0;called</span><span 
class="cmtt-10">&#x00A0;foo.c,</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;it</span><span 
class="cmtt-10">&#x00A0;would</span>
<br class="fancyvrb" /><a 
 id="x1-23056r28"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;embed</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;pcap.c</span><span 
class="cmtt-10">&#x00A0;boilerplate,</span><span 
class="cmtt-10">&#x00A0;which</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;one</span><span 
class="cmtt-10">&#x00A0;you</span><span 
class="cmtt-10">&#x00A0;should</span><span 
class="cmtt-10">&#x00A0;use</span><span 
class="cmtt-10">&#x00A0;when</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;you</span>
<br class="fancyvrb" /><a 
 id="x1-23058r29"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;want</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;use</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;pcap</span><span 
class="cmtt-10">&#x00A0;library.</span><span 
class="cmtt-10">&#x00A0;Next,</span><span 
class="cmtt-10">&#x00A0;you</span><span 
class="cmtt-10">&#x00A0;would</span><span 
class="cmtt-10">&#x00A0;compile</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;resulting</span><span 
class="cmtt-10">&#x00A0;C</span>
<br class="fancyvrb" /><a 
 id="x1-23060r30"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;program</span><span 
class="cmtt-10">&#x00A0;with</span>
<br class="fancyvrb" /><a 
 id="x1-23062r31"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23064r32"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;cc</span><span 
class="cmtt-10">&#x00A0;-o</span><span 
class="cmtt-10">&#x00A0;foo</span><span 
class="cmtt-10">&#x00A0;foo.pfl</span><span 
class="cmtt-10">&#x00A0;-lpcap</span>
<br class="fancyvrb" /><a 
 id="x1-23066r33"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23068r34"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;OPTIONS</span>
<br class="fancyvrb" /><a 
 id="x1-23070r35"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;-h</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;--help</span>
<br class="fancyvrb" /><a 
 id="x1-23072r36"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23074r37"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Prints</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;short</span><span 
class="cmtt-10">&#x00A0;usage</span><span 
class="cmtt-10">&#x00A0;message.</span>
<br class="fancyvrb" /><a 
 id="x1-23076r38"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>

<br class="fancyvrb" /><a 
 id="x1-23078r39"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;-a</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;--ansicolors</span>
<br class="fancyvrb" /><a 
 id="x1-23080r40"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23082r41"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;If</span><span 
class="cmtt-10">&#x00A0;you</span><span 
class="cmtt-10">&#x00A0;specify</span><span 
class="cmtt-10">&#x00A0;this</span><span 
class="cmtt-10">&#x00A0;option,</span><span 
class="cmtt-10">&#x00A0;error</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;debug</span><span 
class="cmtt-10">&#x00A0;messages</span><span 
class="cmtt-10">&#x00A0;will</span><span 
class="cmtt-10">&#x00A0;be</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;in</span>
<br class="fancyvrb" /><a 
 id="x1-23084r42"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;color,</span><span 
class="cmtt-10">&#x00A0;using</span><span 
class="cmtt-10">&#x00A0;standard</span><span 
class="cmtt-10">&#x00A0;ANSI</span><span 
class="cmtt-10">&#x00A0;escape</span><span 
class="cmtt-10">&#x00A0;sequences.</span><span 
class="cmtt-10">&#x00A0;This</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;very</span><span 
class="cmtt-10">&#x00A0;useful</span>
<br class="fancyvrb" /><a 
 id="x1-23086r43"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;debugging,</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;looks</span><span 
class="cmtt-10">&#x00A0;pretty.</span>
<br class="fancyvrb" /><a 
 id="x1-23088r44"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23090r45"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;-d</span><span 
class="cmtt-10">&#x00A0;[&#x003C;N&#x003E;]</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;--debug[=&#x003C;N&#x003E;]</span>
<br class="fancyvrb" /><a 
 id="x1-23092r46"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23094r47"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Sets</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;debug</span><span 
class="cmtt-10">&#x00A0;level.</span><span 
class="cmtt-10">&#x00A0;When</span><span 
class="cmtt-10">&#x00A0;&#x003C;N&#x003E;</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;specified,</span><span 
class="cmtt-10">&#x00A0;default</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;0.</span>
<br class="fancyvrb" /><a 
 id="x1-23096r48"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;When</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;-d</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;specified</span><span 
class="cmtt-10">&#x00A0;at</span><span 
class="cmtt-10">&#x00A0;all,</span><span 
class="cmtt-10">&#x00A0;default</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;99.</span><span 
class="cmtt-10">&#x00A0;A</span><span 
class="cmtt-10">&#x00A0;debug</span><span 
class="cmtt-10">&#x00A0;level</span>
<br class="fancyvrb" /><a 
 id="x1-23098r49"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;setting</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;N</span><span 
class="cmtt-10">&#x00A0;causes</span><span 
class="cmtt-10">&#x00A0;all</span><span 
class="cmtt-10">&#x00A0;debug</span><span 
class="cmtt-10">&#x00A0;messages</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;be</span><span 
class="cmtt-10">&#x00A0;printed</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;standard</span>
<br class="fancyvrb" /><a 
 id="x1-23100r50"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;error</span><span 
class="cmtt-10">&#x00A0;that</span><span 
class="cmtt-10">&#x00A0;are</span><span 
class="cmtt-10">&#x00A0;marked</span><span 
class="cmtt-10">&#x00A0;with</span><span 
class="cmtt-10">&#x00A0;an</span><span 
class="cmtt-10">&#x00A0;importance</span><span 
class="cmtt-10">&#x00A0;greater</span><span 
class="cmtt-10">&#x00A0;than</span><span 
class="cmtt-10">&#x00A0;&#x003C;N&#x003E;.</span>
<br class="fancyvrb" /><a 
 id="x1-23102r51"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23104r52"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;-C</span><span 
class="cmtt-10">&#x00A0;&#x003C;N&#x003E;</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;--cpu=&#x003C;N&#x003E;</span>
<br class="fancyvrb" /><a 
 id="x1-23106r53"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23108r54"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;This</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;will</span><span 
class="cmtt-10">&#x00A0;cause</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;compiler</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;abort</span><span 
class="cmtt-10">&#x00A0;with</span><span 
class="cmtt-10">&#x00A0;an</span><span 
class="cmtt-10">&#x00A0;error</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;main</span>
<br class="fancyvrb" /><a 
 id="x1-23110r55"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;function</span><span 
class="cmtt-10">&#x00A0;(filter())</span><span 
class="cmtt-10">&#x00A0;would</span><span 
class="cmtt-10">&#x00A0;run</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;longer</span><span 
class="cmtt-10">&#x00A0;than</span><span 
class="cmtt-10">&#x00A0;&#x003C;N&#x003E;</span><span 
class="cmtt-10">&#x00A0;arbitrary</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;CPU</span>
<br class="fancyvrb" /><a 
 id="x1-23112r56"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;usage</span><span 
class="cmtt-10">&#x00A0;units</span><span 
class="cmtt-10">&#x00A0;on</span><span 
class="cmtt-10">&#x00A0;at</span><span 
class="cmtt-10">&#x00A0;least</span><span 
class="cmtt-10">&#x00A0;some</span><span 
class="cmtt-10">&#x00A0;inputs.</span>
<br class="fancyvrb" /><a 
 id="x1-23114r57"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23116r58"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;-M</span><span 
class="cmtt-10">&#x00A0;&#x003C;N&#x003E;</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;--mem=&#x003C;N&#x003E;</span>
<br class="fancyvrb" /><a 
 id="x1-23118r59"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23120r60"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;This</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;will</span><span 
class="cmtt-10">&#x00A0;cause</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;compiler</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;abort</span><span 
class="cmtt-10">&#x00A0;with</span><span 
class="cmtt-10">&#x00A0;an</span><span 
class="cmtt-10">&#x00A0;error</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;main</span>
<br class="fancyvrb" /><a 
 id="x1-23122r61"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;function</span><span 
class="cmtt-10">&#x00A0;(filter())</span><span 
class="cmtt-10">&#x00A0;would</span><span 
class="cmtt-10">&#x00A0;consume</span><span 
class="cmtt-10">&#x00A0;more</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;than</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;approximately</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;&#x003C;N&#x003E;</span>
<br class="fancyvrb" /><a 
 id="x1-23124r62"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;words</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;memory</span><span 
class="cmtt-10">&#x00A0;on</span><span 
class="cmtt-10">&#x00A0;at</span><span 
class="cmtt-10">&#x00A0;least</span><span 
class="cmtt-10">&#x00A0;some</span><span 
class="cmtt-10">&#x00A0;inputs.</span>
<br class="fancyvrb" /><a 
 id="x1-23126r63"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23128r64"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;-B</span><span 
class="cmtt-10">&#x00A0;&#x003C;file&#x003E;</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;--boilerplate=&#x003C;file&#x003E;</span>
<br class="fancyvrb" /><a 
 id="x1-23130r65"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23132r66"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;This</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;will</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;cause</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;contents</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;specified</span><span 
class="cmtt-10">&#x00A0;&#x003C;file&#x003E;</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;be</span>
<br class="fancyvrb" /><a 
 id="x1-23134r67"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;inserted</span><span 
class="cmtt-10">&#x00A0;into</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;output.</span><span 
class="cmtt-10">&#x00A0;This</span><span 
class="cmtt-10">&#x00A0;argument</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;mandatory,</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;but</span>
<br class="fancyvrb" /><a 
 id="x1-23136r68"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;output</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;compiler</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;very</span><span 
class="cmtt-10">&#x00A0;useful</span><span 
class="cmtt-10">&#x00A0;without</span><span 
class="cmtt-10">&#x00A0;one</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;the</span>
<br class="fancyvrb" /><a 
 id="x1-23138r69"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;boilerplate</span><span 
class="cmtt-10">&#x00A0;files</span><span 
class="cmtt-10">&#x00A0;inserted</span><span 
class="cmtt-10">&#x00A0;into</span><span 
class="cmtt-10">&#x00A0;it.</span><span 
class="cmtt-10">&#x00A0;The</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;compiler</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;will</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;produce</span>
<br class="fancyvrb" /><a 
 id="x1-23140r70"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;cpp</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;line</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;directives</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;so</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;that</span><span 
class="cmtt-10">&#x00A0;gcc</span><span 
class="cmtt-10">&#x00A0;will</span><span 
class="cmtt-10">&#x00A0;reference</span><span 
class="cmtt-10">&#x00A0;errors</span><span 
class="cmtt-10">&#x00A0;in</span><span 
class="cmtt-10">&#x00A0;the</span>
<br class="fancyvrb" /><a 
 id="x1-23142r71"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;boilerplate</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;appropriate</span><span 
class="cmtt-10">&#x00A0;lines</span><span 
class="cmtt-10">&#x00A0;in</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;boilerplate</span><span 
class="cmtt-10">&#x00A0;file.</span>
<br class="fancyvrb" /><a 
 id="x1-23144r72"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23146r73"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;FILES</span>
<br class="fancyvrb" /><a 
 id="x1-23148r74"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;The</span><span 
class="cmtt-10">&#x00A0;boilerplate</span><span 
class="cmtt-10">&#x00A0;files</span><span 
class="cmtt-10">&#x00A0;used</span><span 
class="cmtt-10">&#x00A0;by</span><span 
class="cmtt-10">&#x00A0;pfc</span><span 
class="cmtt-10">&#x00A0;must</span><span 
class="cmtt-10">&#x00A0;be</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;in</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;boilerplate</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;search</span>
<br class="fancyvrb" /><a 
 id="x1-23150r75"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;path,</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;which</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;consists</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;contents</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;PIFFLEBOILER</span><span 
class="cmtt-10">&#x00A0;environment</span>
<br class="fancyvrb" /><a 
 id="x1-23152r76"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;variable</span><span 
class="cmtt-10">&#x00A0;appended</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;standard</span><span 
class="cmtt-10">&#x00A0;path,</span>
<br class="fancyvrb" /><a 
 id="x1-23154r77"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23156r78"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;.:/usr/share/piffle:/usr/local/share/piffle</span>
<br class="fancyvrb" /><a 
 id="x1-23158r79"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23160r80"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;BUGS</span>
<br class="fancyvrb" /><a 
 id="x1-23162r81"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;When</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;command</span><span 
class="cmtt-10">&#x00A0;line</span><span 
class="cmtt-10">&#x00A0;option</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;specified</span><span 
class="cmtt-10">&#x00A0;more</span><span 
class="cmtt-10">&#x00A0;than</span><span 
class="cmtt-10">&#x00A0;once,</span><span 
class="cmtt-10">&#x00A0;all</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;occurences</span>
<br class="fancyvrb" /><a 
 id="x1-23164r82"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;but</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;last</span><span 
class="cmtt-10">&#x00A0;are</span><span 
class="cmtt-10">&#x00A0;silently</span><span 
class="cmtt-10">&#x00A0;ignored.</span><span 
class="cmtt-10">&#x00A0;I</span><span 
class="cmtt-10">&#x00A0;plan</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;write</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;grand</span><span 
class="cmtt-10">&#x00A0;unified</span><span 
class="cmtt-10">&#x00A0;pro-</span>
<br class="fancyvrb" /><a 
 id="x1-23166r83"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;gram</span><span 
class="cmtt-10">&#x00A0;configuration</span><span 
class="cmtt-10">&#x00A0;library</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;Haskell</span><span 
class="cmtt-10">&#x00A0;one</span><span 
class="cmtt-10">&#x00A0;day,</span><span 
class="cmtt-10">&#x00A0;which</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;going</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;read</span>
<br class="fancyvrb" /><a 
 id="x1-23168r84"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;command</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;lines,</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;environment</span><span 
class="cmtt-10">&#x00A0;variables,</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;various</span><span 
class="cmtt-10">&#x00A0;sorts</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;configura-</span>
<br class="fancyvrb" /><a 
 id="x1-23170r85"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;tion</span><span 
class="cmtt-10">&#x00A0;files.</span><span 
class="cmtt-10">&#x00A0;Obviously,</span><span 
class="cmtt-10">&#x00A0;even</span><span 
class="cmtt-10">&#x00A0;though</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;grand</span><span 
class="cmtt-10">&#x00A0;unified</span><span 
class="cmtt-10">&#x00A0;library</span><span 
class="cmtt-10">&#x00A0;will</span><span 
class="cmtt-10">&#x00A0;prob-</span>
<br class="fancyvrb" /><a 
 id="x1-23172r86"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;ably</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;never</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;materialize,</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;I</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;am</span><span 
class="cmtt-10">&#x00A0;reluctant</span><span 
class="cmtt-10">&#x00A0;now</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;overly</span><span 
class="cmtt-10">&#x00A0;complicate</span><span 
class="cmtt-10">&#x00A0;the</span>
<br class="fancyvrb" /><a 
 id="x1-23174r87"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;command</span><span 
class="cmtt-10">&#x00A0;line</span><span 
class="cmtt-10">&#x00A0;parsing</span><span 
class="cmtt-10">&#x00A0;in</span><span 
class="cmtt-10">&#x00A0;pfc.</span>
<br class="fancyvrb" /><a 
 id="x1-23176r88"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23178r89"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;The</span><span 
class="cmtt-10">&#x00A0;C</span><span 
class="cmtt-10">&#x00A0;code</span><span 
class="cmtt-10">&#x00A0;produced</span><span 
class="cmtt-10">&#x00A0;by</span><span 
class="cmtt-10">&#x00A0;pfc</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;standard</span><span 
class="cmtt-10">&#x00A0;ANSI</span><span 
class="cmtt-10">&#x00A0;C.</span><span 
class="cmtt-10">&#x00A0;It</span><span 
class="cmtt-10">&#x00A0;uses</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;GNU</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;exten-</span>
<br class="fancyvrb" /><a 
 id="x1-23180r90"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;sions</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;can</span><span 
class="cmtt-10">&#x00A0;only</span><span 
class="cmtt-10">&#x00A0;be</span><span 
class="cmtt-10">&#x00A0;compiled</span><span 
class="cmtt-10">&#x00A0;by</span><span 
class="cmtt-10">&#x00A0;gcc.</span>

<br class="fancyvrb" /><a 
 id="x1-23182r91"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23184r92"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;AUTHOR</span>
<br class="fancyvrb" /><a 
 id="x1-23186r93"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Jaap</span><span 
class="cmtt-10">&#x00A0;Weel</span><span 
class="cmtt-10">&#x00A0;&#x003C;weel@ugcs.caltech.edu&#x003E;</span>
<br class="fancyvrb" /><a 
 id="x1-23188r94"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23190r95"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23192r96"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23194r97"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-23196r98"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc-0.1</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;PFC(1)</span>
  </div>

  <h2 class="chapterHead"><span class="titlemark">6</span>.&#x00A0;&#x00A0;<a 
 id="x1-240006"></a>The pcap boilerplate, pcap.c</h2>
<!--l. 554--><p class="noindent">As I explained in the pfc man page, you usually want to tell pfc to embed a certain
&#8220;boilerplate&#8221; into its output. The &#8220;boilerplate&#8221; is a file that typically contains a <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">main()</span></span></span>
function that provides some means of gathering network packets, repeatedly calling <span class="obeylines-h"><span class="verb"><span 
class="cmtt-12">filter()</span></span></span>
on them, and spitting them back out.
<!--l. 560--><p class="indent">  There is a second man page, pfc.pcap(1), that explains how to use a Piffle program that has
been complied using the pcap.c boilerplate. Enjoy.
  <h3 class="sectionHead"><span class="titlemark">6.1</span>.&#x00A0;&#x00A0;<a 
 id="x1-250006.1"></a>The pfc.pcap(1) manual page</h3>
<!--l. 566--><p class="noindent">
  <div class="fancyvrb" id="fancyvrb2">
<a 
 id="x1-25002r1"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;PFC.PCAP(1)</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;PFC.PCAP(1)</span>
<br class="fancyvrb" /><a 
 id="x1-25004r2"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25006r3"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25008r4"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25010r5"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;NAME</span>
<br class="fancyvrb" /><a 
 id="x1-25012r6"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc.pcap</span><span 
class="cmtt-10">&#x00A0;-</span><span 
class="cmtt-10">&#x00A0;Any</span><span 
class="cmtt-10">&#x00A0;Piffle</span><span 
class="cmtt-10">&#x00A0;program</span><span 
class="cmtt-10">&#x00A0;using</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;pcap.c</span><span 
class="cmtt-10">&#x00A0;boilerplate</span>
<br class="fancyvrb" /><a 
 id="x1-25014r7"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25016r8"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;SYNOPSIS</span>
<br class="fancyvrb" /><a 
 id="x1-25018r9"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc.pcap</span><span 
class="cmtt-10">&#x00A0;[OPTIONS]</span>
<br class="fancyvrb" /><a 
 id="x1-25020r10"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25022r11"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;DESCRIPTION</span>
<br class="fancyvrb" /><a 
 id="x1-25024r12"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;This</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;manual</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;page</span><span 
class="cmtt-10">&#x00A0;applies</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;any</span><span 
class="cmtt-10">&#x00A0;Piffle</span><span 
class="cmtt-10">&#x00A0;program</span><span 
class="cmtt-10">&#x00A0;that</span><span 
class="cmtt-10">&#x00A0;has</span><span 
class="cmtt-10">&#x00A0;been</span><span 
class="cmtt-10">&#x00A0;compiled</span>
<br class="fancyvrb" /><a 
 id="x1-25026r13"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;with</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;-Bpcap.c</span><span 
class="cmtt-10">&#x00A0;option.</span>
<br class="fancyvrb" /><a 
 id="x1-25028r14"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25030r15"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;OPTIONS</span>
<br class="fancyvrb" /><a 
 id="x1-25032r16"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;If</span><span 
class="cmtt-10">&#x00A0;no</span><span 
class="cmtt-10">&#x00A0;input</span><span 
class="cmtt-10">&#x00A0;device</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;file</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;specified,</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;program</span><span 
class="cmtt-10">&#x00A0;will</span><span 
class="cmtt-10">&#x00A0;try</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;read</span>
<br class="fancyvrb" /><a 
 id="x1-25034r17"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;from</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;standard</span><span 
class="cmtt-10">&#x00A0;network</span><span 
class="cmtt-10">&#x00A0;device.</span><span 
class="cmtt-10">&#x00A0;If</span><span 
class="cmtt-10">&#x00A0;no</span><span 
class="cmtt-10">&#x00A0;output</span><span 
class="cmtt-10">&#x00A0;file</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;specified,</span><span 
class="cmtt-10">&#x00A0;and</span>
<br class="fancyvrb" /><a 
 id="x1-25036r18"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;-v</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;specified,</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;program</span><span 
class="cmtt-10">&#x00A0;will</span><span 
class="cmtt-10">&#x00A0;most</span><span 
class="cmtt-10">&#x00A0;likely</span><span 
class="cmtt-10">&#x00A0;produce</span><span 
class="cmtt-10">&#x00A0;no</span><span 
class="cmtt-10">&#x00A0;output</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;at</span>
<br class="fancyvrb" /><a 
 id="x1-25038r19"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;all,</span><span 
class="cmtt-10">&#x00A0;which</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;probably</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;what</span><span 
class="cmtt-10">&#x00A0;you</span><span 
class="cmtt-10">&#x00A0;want.</span>
<br class="fancyvrb" /><a 
 id="x1-25040r20"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25042r21"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;--help</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;-h</span>
<br class="fancyvrb" /><a 
 id="x1-25044r22"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25046r23"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Show</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;help</span><span 
class="cmtt-10">&#x00A0;text.</span>
<br class="fancyvrb" /><a 
 id="x1-25048r24"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25050r25"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;--device=&#x003C;dev&#x003E;</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;-d</span><span 
class="cmtt-10">&#x00A0;&#x003C;dev&#x003E;</span>
<br class="fancyvrb" /><a 
 id="x1-25052r26"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25054r27"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Use</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;&#x003C;dev&#x003E;</span><span 
class="cmtt-10">&#x00A0;as</span><span 
class="cmtt-10">&#x00A0;monitoring</span><span 
class="cmtt-10">&#x00A0;device.</span><span 
class="cmtt-10">&#x00A0;The</span><span 
class="cmtt-10">&#x00A0;device</span><span 
class="cmtt-10">&#x00A0;notation</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;same</span>
<br class="fancyvrb" /><a 
 id="x1-25056r28"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;as</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;tcpdump,</span><span 
class="cmtt-10">&#x00A0;so</span><span 
class="cmtt-10">&#x00A0;you</span><span 
class="cmtt-10">&#x00A0;can</span><span 
class="cmtt-10">&#x00A0;use</span><span 
class="cmtt-10">&#x00A0;tcpdump</span><span 
class="cmtt-10">&#x00A0;-D</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;get</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;list</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;valid</span>
<br class="fancyvrb" /><a 
 id="x1-25058r29"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;devices.</span>
<br class="fancyvrb" /><a 
 id="x1-25060r30"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25062r31"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;--input=&#x003C;file&#x003E;</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;-f</span><span 
class="cmtt-10">&#x00A0;&#x003C;file&#x003E;</span>
<br class="fancyvrb" /><a 
 id="x1-25064r32"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25066r33"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Read</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;input</span><span 
class="cmtt-10">&#x00A0;from</span><span 
class="cmtt-10">&#x00A0;capture</span><span 
class="cmtt-10">&#x00A0;file</span><span 
class="cmtt-10">&#x00A0;&#x003C;file&#x003E;.</span><span 
class="cmtt-10">&#x00A0;(Use</span><span 
class="cmtt-10">&#x00A0;-</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;stdin.)</span>
<br class="fancyvrb" /><a 
 id="x1-25068r34"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25070r35"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;--output=&#x003C;file&#x003E;</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;-o</span><span 
class="cmtt-10">&#x00A0;&#x003C;file&#x003E;</span>
<br class="fancyvrb" /><a 
 id="x1-25072r36"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25074r37"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Write</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;output</span><span 
class="cmtt-10">&#x00A0;packets</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;file</span><span 
class="cmtt-10">&#x00A0;&#x003C;file&#x003E;.</span><span 
class="cmtt-10">&#x00A0;The</span><span 
class="cmtt-10">&#x00A0;resulting</span><span 
class="cmtt-10">&#x00A0;file</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;a</span>
<br class="fancyvrb" /><a 
 id="x1-25076r38"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;tcpdump-compatible</span><span 
class="cmtt-10">&#x00A0;capture</span><span 
class="cmtt-10">&#x00A0;file.</span><span 
class="cmtt-10">&#x00A0;(Use</span><span 
class="cmtt-10">&#x00A0;-</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;stdout.)</span>

<br class="fancyvrb" /><a 
 id="x1-25078r39"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25080r40"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;--filter=&#x003C;exp&#x003E;</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;-F</span><span 
class="cmtt-10">&#x00A0;&#x003C;exp&#x003E;</span>
<br class="fancyvrb" /><a 
 id="x1-25082r41"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25084r42"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Tell</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;pcap</span><span 
class="cmtt-10">&#x00A0;library</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;compile</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;expression</span><span 
class="cmtt-10">&#x00A0;&#x003C;exp&#x003E;</span><span 
class="cmtt-10">&#x00A0;into</span><span 
class="cmtt-10">&#x00A0;a</span>
<br class="fancyvrb" /><a 
 id="x1-25086r43"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Berkeley</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Packet</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Filter</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;apply</span><span 
class="cmtt-10">&#x00A0;it</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;incoming</span><span 
class="cmtt-10">&#x00A0;packets</span><span 
class="cmtt-10">&#x00A0;before</span>
<br class="fancyvrb" /><a 
 id="x1-25088r44"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;feeding</span><span 
class="cmtt-10">&#x00A0;them</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;Piffle</span><span 
class="cmtt-10">&#x00A0;program.</span><span 
class="cmtt-10">&#x00A0;For</span><span 
class="cmtt-10">&#x00A0;instance,</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;you</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;can</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;use</span>
<br class="fancyvrb" /><a 
 id="x1-25090r45"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;-Ftcp</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;you</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;want</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;select</span><span 
class="cmtt-10">&#x00A0;only</span><span 
class="cmtt-10">&#x00A0;TCP</span><span 
class="cmtt-10">&#x00A0;packets.</span><span 
class="cmtt-10">&#x00A0;The</span><span 
class="cmtt-10">&#x00A0;syntax</span><span 
class="cmtt-10">&#x00A0;for</span>
<br class="fancyvrb" /><a 
 id="x1-25092r46"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;&#x003C;exp&#x003E;</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;described</span><span 
class="cmtt-10">&#x00A0;in</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;tcpdump(8)</span><span 
class="cmtt-10">&#x00A0;man</span><span 
class="cmtt-10">&#x00A0;page.</span>
<br class="fancyvrb" /><a 
 id="x1-25094r47"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25096r48"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;-v</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;--verbose</span>
<br class="fancyvrb" /><a 
 id="x1-25098r49"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25100r50"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Be</span><span 
class="cmtt-10">&#x00A0;more</span><span 
class="cmtt-10">&#x00A0;verbose</span><span 
class="cmtt-10">&#x00A0;during</span><span 
class="cmtt-10">&#x00A0;monitoring.</span>
<br class="fancyvrb" /><a 
 id="x1-25102r51"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25104r52"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;RETURN</span><span 
class="cmtt-10">&#x00A0;VALUES</span>
<br class="fancyvrb" /><a 
 id="x1-25106r53"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;The</span><span 
class="cmtt-10">&#x00A0;program</span><span 
class="cmtt-10">&#x00A0;will</span><span 
class="cmtt-10">&#x00A0;print</span><span 
class="cmtt-10">&#x00A0;error</span><span 
class="cmtt-10">&#x00A0;messages</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;stderr,</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;follow-</span>
<br class="fancyvrb" /><a 
 id="x1-25108r54"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;ing</span><span 
class="cmtt-10">&#x00A0;error</span><span 
class="cmtt-10">&#x00A0;codes:</span>
<br class="fancyvrb" /><a 
 id="x1-25110r55"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25112r56"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;0</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Normal</span><span 
class="cmtt-10">&#x00A0;exit,</span><span 
class="cmtt-10">&#x00A0;no</span><span 
class="cmtt-10">&#x00A0;problems.</span>
<br class="fancyvrb" /><a 
 id="x1-25114r57"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25116r58"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;1</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Problem</span><span 
class="cmtt-10">&#x00A0;parsing</span><span 
class="cmtt-10">&#x00A0;command</span><span 
class="cmtt-10">&#x00A0;line.</span>
<br class="fancyvrb" /><a 
 id="x1-25118r59"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25120r60"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;2</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Problem</span><span 
class="cmtt-10">&#x00A0;opening</span><span 
class="cmtt-10">&#x00A0;file</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;device.</span>
<br class="fancyvrb" /><a 
 id="x1-25122r61"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25124r62"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;3</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Problem</span><span 
class="cmtt-10">&#x00A0;with</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;pcap</span><span 
class="cmtt-10">&#x00A0;library</span><span 
class="cmtt-10">&#x00A0;call.</span>
<br class="fancyvrb" /><a 
 id="x1-25126r63"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25128r64"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;SEE</span><span 
class="cmtt-10">&#x00A0;ALSO</span>
<br class="fancyvrb" /><a 
 id="x1-25130r65"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc(1),</span><span 
class="cmtt-10">&#x00A0;pcap(3),</span><span 
class="cmtt-10">&#x00A0;tcpdump(8)</span>
<br class="fancyvrb" /><a 
 id="x1-25132r66"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25134r67"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;BUGS</span>
<br class="fancyvrb" /><a 
 id="x1-25136r68"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Please</span><span 
class="cmtt-10">&#x00A0;report</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;author.</span>
<br class="fancyvrb" /><a 
 id="x1-25138r69"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25140r70"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;AUTHOR</span>
<br class="fancyvrb" /><a 
 id="x1-25142r71"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Jaap</span><span 
class="cmtt-10">&#x00A0;Weel</span><span 
class="cmtt-10">&#x00A0;&#x003C;weel@ugcs.caltech.edu&#x003E;</span>
<br class="fancyvrb" /><a 
 id="x1-25144r72"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25146r73"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25148r74"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25150r75"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-25152r76"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc-0.1</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;PFC.PCAP(1)</span>
  </div>
<!--l. 568--><p class="noindent">
  <h3 class="sectionHead"><span class="titlemark">6.2</span>.&#x00A0;&#x00A0;<a 
 id="x1-260006.2"></a>Writing programs for the pcap.c boilerplate</h3>
<!--l. 570--><p class="noindent">The pcap.c boilerplate defines a function prototype <span 
class="cmtt-12">filter() </span>in C as follows:

  <table 
class="verbatim"><tr class="verbatim"><td 
class="verbatim"><div class="verbatim">
uint32_t&#x00A0;filter(uint8_t&#x00A0;inp[],&#x00A0;uint32_t&#x00A0;in_sz,&#x00A0;uint8_t&#x00A0;out[],&#x00A0;uint32_t&#x00A0;out_sz);
</div>
</td></tr></table>
<!--l. 575--><p class="nopar">
<!--l. 577--><p class="indent">  This function is supposed to be declared in Piffle as follows:

  <table 
class="verbatim"><tr class="verbatim"><td 
class="verbatim"><div class="verbatim">
fun&#x00A0;filter(&#x00A0;inp&#x00A0;:&#x00A0;u8[...],&#x00A0;inp_sz&#x00A0;:&#x00A0;u32,
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;out&#x00A0;:&#x00A0;u8[...],&#x00A0;out_sz&#x00A0;:&#x00A0;u32&#x00A0;)&#x00A0;:&#x00A0;u32&#x00A0;=&#x00A0;...;
</div>
</td></tr></table>
<!--l. 582--><p class="nopar">
<!--l. 584--><p class="indent">  The <span 
class="cmtt-12">inp </span>and <span 
class="cmtt-12">out </span>arrays are the input and output packets, and the <span 
class="cmtt-12">inp</span><span 
class="cmtt-12">_sz </span>and <span 
class="cmtt-12">out</span><span 
class="cmtt-12">_sz</span>
integers contain the size of those arrays. The function is supposed to write things into the <span 
class="cmtt-12">out</span>
array, and return the actual length of the outgoing packet.
<!--l. 589--><p class="indent">  For instance, a <span 
class="cmtt-12">filter </span>function that simply copies the incoming packet would look like
this:

  <table 
class="verbatim"><tr class="verbatim"><td 
class="verbatim"><div class="verbatim">
fun&#x00A0;filter(&#x00A0;inp&#x00A0;:&#x00A0;u8[65536],&#x00A0;inp_sz&#x00A0;:&#x00A0;u32,
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;out&#x00A0;:&#x00A0;u8[65536],&#x00A0;out_sz&#x00A0;:&#x00A0;u32&#x00A0;)&#x00A0;:&#x00A0;u32&#x00A0;=&#x00A0;{
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;var&#x00A0;i&#x00A0;:&#x00A0;u32;
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;var&#x00A0;out_sz_new&#x00A0;:&#x00A0;u32;
&#x00A0;<br />
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;out_sz_new&#x00A0;=&#x00A0;if&#x00A0;inp_sz&#x00A0;&#x003C;&#x00A0;out_sz&#x00A0;then&#x00A0;inp_sz&#x00A0;else&#x00A0;out_sz;
&#x00A0;<br />
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;for&#x00A0;i&#x00A0;from&#x00A0;0&#x00A0;to&#x00A0;65536&#x00A0;while&#x00A0;i&#x00A0;&#x003C;&#x00A0;out_sz_new&#x00A0;do&#x00A0;{
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;out[i]&#x00A0;=&#x00A0;inp[i];
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;};
&#x00A0;<br />
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;out_sz_new;
&#x00A0;<br />};
</div>
</td></tr></table>
<!--l. 606--><p class="nopar">

  <h2 class="chapterHead"><span class="titlemark">7</span>.&#x00A0;&#x00A0;<a 
 id="x1-270007"></a>The test boilerplate, test.c</h2>
<!--l. 611--><p class="noindent">There is another boilerplate called text.c, which exists mainly for the benefit of the Piffle test
suite, and is probably not useful for anything else. It is nonetheless documented on its own
manpage, pfc.test(1).
  <h3 class="sectionHead"><span class="titlemark">7.1</span>.&#x00A0;&#x00A0;<a 
 id="x1-280007.1"></a>The pfc.test(1) manual page</h3>
<!--l. 618--><p class="noindent">
  <div class="fancyvrb" id="fancyvrb3">
<a 
 id="x1-28002r1"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;PFC.TEST(1)</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;PFC.TEST(1)</span>
<br class="fancyvrb" /><a 
 id="x1-28004r2"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28006r3"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28008r4"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28010r5"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;NAME</span>
<br class="fancyvrb" /><a 
 id="x1-28012r6"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc.test</span><span 
class="cmtt-10">&#x00A0;-</span><span 
class="cmtt-10">&#x00A0;Any</span><span 
class="cmtt-10">&#x00A0;Piffle</span><span 
class="cmtt-10">&#x00A0;program</span><span 
class="cmtt-10">&#x00A0;using</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;test.c</span><span 
class="cmtt-10">&#x00A0;boilerplate</span>
<br class="fancyvrb" /><a 
 id="x1-28014r7"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28016r8"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;SYNOPSIS</span>
<br class="fancyvrb" /><a 
 id="x1-28018r9"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc.test</span>
<br class="fancyvrb" /><a 
 id="x1-28020r10"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28022r11"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;DESCRIPTION</span>
<br class="fancyvrb" /><a 
 id="x1-28024r12"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;This</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;manual</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;page</span><span 
class="cmtt-10">&#x00A0;applies</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;any</span><span 
class="cmtt-10">&#x00A0;Piffle</span><span 
class="cmtt-10">&#x00A0;program</span><span 
class="cmtt-10">&#x00A0;that</span><span 
class="cmtt-10">&#x00A0;has</span><span 
class="cmtt-10">&#x00A0;been</span><span 
class="cmtt-10">&#x00A0;compiled</span>
<br class="fancyvrb" /><a 
 id="x1-28026r13"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;with</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;-Btest.c</span><span 
class="cmtt-10">&#x00A0;option.</span><span 
class="cmtt-10">&#x00A0;A</span><span 
class="cmtt-10">&#x00A0;Piffle</span><span 
class="cmtt-10">&#x00A0;program</span><span 
class="cmtt-10">&#x00A0;compiled</span><span 
class="cmtt-10">&#x00A0;that</span><span 
class="cmtt-10">&#x00A0;way</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;takes</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;no</span>
<br class="fancyvrb" /><a 
 id="x1-28028r14"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;command</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;line</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;arguments.</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;It</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;reads</span><span 
class="cmtt-10">&#x00A0;newline-separated</span><span 
class="cmtt-10">&#x00A0;lines</span><span 
class="cmtt-10">&#x00A0;from</span><span 
class="cmtt-10">&#x00A0;stdin</span>
<br class="fancyvrb" /><a 
 id="x1-28030r15"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;until</span><span 
class="cmtt-10">&#x00A0;EOF,</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;sends</span><span 
class="cmtt-10">&#x00A0;each</span><span 
class="cmtt-10">&#x00A0;line</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;filter()</span><span 
class="cmtt-10">&#x00A0;function</span><span 
class="cmtt-10">&#x00A0;as</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;null-ter-</span>
<br class="fancyvrb" /><a 
 id="x1-28032r16"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;minated</span><span 
class="cmtt-10">&#x00A0;character</span><span 
class="cmtt-10">&#x00A0;array.</span><span 
class="cmtt-10">&#x00A0;Empty</span><span 
class="cmtt-10">&#x00A0;lines</span><span 
class="cmtt-10">&#x00A0;are</span><span 
class="cmtt-10">&#x00A0;ignored.</span><span 
class="cmtt-10">&#x00A0;The</span><span 
class="cmtt-10">&#x00A0;filter()</span><span 
class="cmtt-10">&#x00A0;function</span>
<br class="fancyvrb" /><a 
 id="x1-28034r17"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;expected</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;null-terminated</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;character</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;array.</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Output</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;is</span>
<br class="fancyvrb" /><a 
 id="x1-28036r18"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;printed</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;stdout,</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;separated</span><span 
class="cmtt-10">&#x00A0;by</span><span 
class="cmtt-10">&#x00A0;newlines.</span><span 
class="cmtt-10">&#x00A0;Error</span><span 
class="cmtt-10">&#x00A0;checking</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;minimal,</span>
<br class="fancyvrb" /><a 
 id="x1-28038r19"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;error</span><span 
class="cmtt-10">&#x00A0;messages</span><span 
class="cmtt-10">&#x00A0;are</span><span 
class="cmtt-10">&#x00A0;cryptic.</span><span 
class="cmtt-10">&#x00A0;The</span><span 
class="cmtt-10">&#x00A0;test.c</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;boilerplate</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;exists</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;mainly</span>
<br class="fancyvrb" /><a 
 id="x1-28040r20"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;just</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;support</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;Piffle</span><span 
class="cmtt-10">&#x00A0;test</span><span 
class="cmtt-10">&#x00A0;suite,</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;probably</span><span 
class="cmtt-10">&#x00A0;should</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;be</span><span 
class="cmtt-10">&#x00A0;used</span>
<br class="fancyvrb" /><a 
 id="x1-28042r21"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;anything</span><span 
class="cmtt-10">&#x00A0;else.</span>
<br class="fancyvrb" /><a 
 id="x1-28044r22"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28046r23"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;SEE</span><span 
class="cmtt-10">&#x00A0;ALSO</span>
<br class="fancyvrb" /><a 
 id="x1-28048r24"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc(1)</span>
<br class="fancyvrb" /><a 
 id="x1-28050r25"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28052r26"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;BUGS</span>
<br class="fancyvrb" /><a 
 id="x1-28054r27"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Please</span><span 
class="cmtt-10">&#x00A0;report</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;author.</span>
<br class="fancyvrb" /><a 
 id="x1-28056r28"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28058r29"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;AUTHOR</span>
<br class="fancyvrb" /><a 
 id="x1-28060r30"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;Jaap</span><span 
class="cmtt-10">&#x00A0;Weel</span><span 
class="cmtt-10">&#x00A0;&#x003C;weel@ugcs.caltech.edu&#x003E;</span>
<br class="fancyvrb" /><a 
 id="x1-28062r31"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28064r32"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28066r33"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28068r34"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-28070r35"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pfc-0.1</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;PFC.TEST(1)</span>
  </div>

  <h2 class="chapterHead"><span class="titlemark">8</span>.&#x00A0;&#x00A0;<a 
 id="x1-290008"></a>An example of a packet filter</h2>
  <h3 class="sectionHead"><span class="titlemark">8.1</span>.&#x00A0;&#x00A0;<a 
 id="x1-300008.1"></a>A packet filter in PFL</h3>
<!--l. 624--><p class="noindent">
  <div class="fancyvrb" id="fancyvrb4">
<a 
 id="x1-30002r1"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;/*</span>
<br class="fancyvrb" /><a 
 id="x1-30004r2"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;This</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;an</span><span 
class="cmtt-10">&#x00A0;actual</span><span 
class="cmtt-10">&#x00A0;packet</span><span 
class="cmtt-10">&#x00A0;filter</span><span 
class="cmtt-10">&#x00A0;that</span><span 
class="cmtt-10">&#x00A0;should</span><span 
class="cmtt-10">&#x00A0;work</span><span 
class="cmtt-10">&#x00A0;with</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;pcap</span>
<br class="fancyvrb" /><a 
 id="x1-30006r3"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;boilerplate.</span><span 
class="cmtt-10">&#x00A0;It</span><span 
class="cmtt-10">&#x00A0;only</span><span 
class="cmtt-10">&#x00A0;lets</span><span 
class="cmtt-10">&#x00A0;through</span><span 
class="cmtt-10">&#x00A0;TCP</span><span 
class="cmtt-10">&#x00A0;packets.</span><span 
class="cmtt-10">&#x00A0;In</span><span 
class="cmtt-10">&#x00A0;particular,</span><span 
class="cmtt-10">&#x00A0;it</span>
<br class="fancyvrb" /><a 
 id="x1-30008r4"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;drops</span><span 
class="cmtt-10">&#x00A0;everything</span><span 
class="cmtt-10">&#x00A0;that</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;IP</span><span 
class="cmtt-10">&#x00A0;(such</span><span 
class="cmtt-10">&#x00A0;as</span><span 
class="cmtt-10">&#x00A0;ARP),</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;everything</span><span 
class="cmtt-10">&#x00A0;that</span>
<br class="fancyvrb" /><a 
 id="x1-30010r5"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;IP</span><span 
class="cmtt-10">&#x00A0;but</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;TCP</span><span 
class="cmtt-10">&#x00A0;(such</span><span 
class="cmtt-10">&#x00A0;as</span><span 
class="cmtt-10">&#x00A0;UDP).</span><span 
class="cmtt-10">&#x00A0;For</span><span 
class="cmtt-10">&#x00A0;instance,</span>
<br class="fancyvrb" /><a 
 id="x1-30012r6"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span>
<br class="fancyvrb" /><a 
 id="x1-30014r7"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pcap_tcp</span><span 
class="cmtt-10">&#x00A0;-v</span><span 
class="cmtt-10">&#x00A0;-Fudp</span>
<br class="fancyvrb" /><a 
 id="x1-30016r8"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span>
<br class="fancyvrb" /><a 
 id="x1-30018r9"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;should</span><span 
class="cmtt-10">&#x00A0;give</span><span 
class="cmtt-10">&#x00A0;no</span><span 
class="cmtt-10">&#x00A0;output</span><span 
class="cmtt-10">&#x00A0;at</span><span 
class="cmtt-10">&#x00A0;all,</span><span 
class="cmtt-10">&#x00A0;while</span>
<br class="fancyvrb" /><a 
 id="x1-30020r10"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span>
<br class="fancyvrb" /><a 
 id="x1-30022r11"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;pcap_tcp</span><span 
class="cmtt-10">&#x00A0;-v</span><span 
class="cmtt-10">&#x00A0;-Ftcp</span>
<br class="fancyvrb" /><a 
 id="x1-30024r12"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span>
<br class="fancyvrb" /><a 
 id="x1-30026r13"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;should</span><span 
class="cmtt-10">&#x00A0;give</span><span 
class="cmtt-10">&#x00A0;output.</span><span 
class="cmtt-10">&#x00A0;(If</span><span 
class="cmtt-10">&#x00A0;there&#8217;s</span><span 
class="cmtt-10">&#x00A0;any</span><span 
class="cmtt-10">&#x00A0;TCP</span><span 
class="cmtt-10">&#x00A0;traffic</span><span 
class="cmtt-10">&#x00A0;going</span><span 
class="cmtt-10">&#x00A0;on.)</span>
<br class="fancyvrb" /><a 
 id="x1-30028r14"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span>
<br class="fancyvrb" /><a 
 id="x1-30030r15"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;Note</span><span 
class="cmtt-10">&#x00A0;that,</span><span 
class="cmtt-10">&#x00A0;on</span><span 
class="cmtt-10">&#x00A0;my</span><span 
class="cmtt-10">&#x00A0;machine,</span><span 
class="cmtt-10">&#x00A0;which</span><span 
class="cmtt-10">&#x00A0;has</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;run-off-the-mill</span><span 
class="cmtt-10">&#x00A0;ethernet</span>
<br class="fancyvrb" /><a 
 id="x1-30032r16"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;adapter,</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;link</span><span 
class="cmtt-10">&#x00A0;level</span><span 
class="cmtt-10">&#x00A0;header</span><span 
class="cmtt-10">&#x00A0;that</span><span 
class="cmtt-10">&#x00A0;sits</span><span 
class="cmtt-10">&#x00A0;in</span><span 
class="cmtt-10">&#x00A0;front</span><span 
class="cmtt-10">&#x00A0;of</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;IP</span><span 
class="cmtt-10">&#x00A0;packet</span>
<br class="fancyvrb" /><a 
 id="x1-30034r17"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;16</span><span 
class="cmtt-10">&#x00A0;bytes</span><span 
class="cmtt-10">&#x00A0;long,</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;has</span><span 
class="cmtt-10">&#x00A0;an</span><span 
class="cmtt-10">&#x00A0;EtherType</span><span 
class="cmtt-10">&#x00A0;in</span><span 
class="cmtt-10">&#x00A0;bytes</span><span 
class="cmtt-10">&#x00A0;14</span><span 
class="cmtt-10">&#x00A0;and</span><span 
class="cmtt-10">&#x00A0;15</span><span 
class="cmtt-10">&#x00A0;(counting</span>
<br class="fancyvrb" /><a 
 id="x1-30036r18"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;from</span><span 
class="cmtt-10">&#x00A0;0).</span><span 
class="cmtt-10">&#x00A0;I</span><span 
class="cmtt-10">&#x00A0;have</span><span 
class="cmtt-10">&#x00A0;no</span><span 
class="cmtt-10">&#x00A0;idea</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;this</span><span 
class="cmtt-10">&#x00A0;code</span><span 
class="cmtt-10">&#x00A0;would</span><span 
class="cmtt-10">&#x00A0;work</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;802.11*</span>
<br class="fancyvrb" /><a 
 id="x1-30038r19"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;wireless</span><span 
class="cmtt-10">&#x00A0;networks,</span><span 
class="cmtt-10">&#x00A0;FDDI,</span><span 
class="cmtt-10">&#x00A0;Myrinet</span><span 
class="cmtt-10">&#x00A0;&amp;c.</span>
<br class="fancyvrb" /><a 
 id="x1-30040r20"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*/</span>
<br class="fancyvrb" /><a 
 id="x1-30042r21"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30044r22"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;/*</span>
<br class="fancyvrb" /><a 
 id="x1-30046r23"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;Get</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;EtherType</span><span 
class="cmtt-10">&#x00A0;protocol</span><span 
class="cmtt-10">&#x00A0;number,</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;-1</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;packet</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;too</span><span 
class="cmtt-10">&#x00A0;small.</span>
<br class="fancyvrb" /><a 
 id="x1-30048r24"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*/</span>
<br class="fancyvrb" /><a 
 id="x1-30050r25"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;fun</span><span 
class="cmtt-10">&#x00A0;ethertype(</span><span 
class="cmtt-10">&#x00A0;inp</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u8[65536],</span><span 
class="cmtt-10">&#x00A0;inp_sz</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u32</span><span 
class="cmtt-10">&#x00A0;)</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;s32</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-30052r26"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;inp_sz</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;16</span><span 
class="cmtt-10">&#x00A0;then</span><span 
class="cmtt-10">&#x00A0;-1</span><span 
class="cmtt-10">&#x00A0;else</span><span 
class="cmtt-10">&#x00A0;((inp[14]</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u16</span><span 
class="cmtt-10">&#x00A0;&#x003C;&#x003C;</span><span 
class="cmtt-10">&#x00A0;8)</span><span 
class="cmtt-10">&#x00A0;|</span><span 
class="cmtt-10">&#x00A0;(inp[15]</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u16))</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;s32;</span>
<br class="fancyvrb" /><a 
 id="x1-30054r27"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;};</span>
<br class="fancyvrb" /><a 
 id="x1-30056r28"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30058r29"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;/*</span>
<br class="fancyvrb" /><a 
 id="x1-30060r30"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;Is</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;packet</span><span 
class="cmtt-10">&#x00A0;an</span><span 
class="cmtt-10">&#x00A0;IP</span><span 
class="cmtt-10">&#x00A0;packet?</span>
<br class="fancyvrb" /><a 
 id="x1-30062r31"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*/</span>
<br class="fancyvrb" /><a 
 id="x1-30064r32"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;fun</span><span 
class="cmtt-10">&#x00A0;ip_p</span><span 
class="cmtt-10">&#x00A0;(</span><span 
class="cmtt-10">&#x00A0;inp</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u8[65536],</span><span 
class="cmtt-10">&#x00A0;inp_sz</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u32</span><span 
class="cmtt-10">&#x00A0;)</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;bool</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-30066r33"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;var</span><span 
class="cmtt-10">&#x00A0;ethertype_s</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;s32;</span>
<br class="fancyvrb" /><a 
 id="x1-30068r34"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30070r35"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;ethertype_s</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;ethertype(inp,</span><span 
class="cmtt-10">&#x00A0;inp_sz);</span>
<br class="fancyvrb" /><a 
 id="x1-30072r36"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;ethertype_s</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;0</span><span 
class="cmtt-10">&#x00A0;then</span><span 
class="cmtt-10">&#x00A0;false</span><span 
class="cmtt-10">&#x00A0;else</span><span 
class="cmtt-10">&#x00A0;ethertype_s</span><span 
class="cmtt-10">&#x00A0;==</span><span 
class="cmtt-10">&#x00A0;0x0800;</span>
<br class="fancyvrb" /><a 
 id="x1-30074r37"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;};</span>
<br class="fancyvrb" /><a 
 id="x1-30076r38"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30078r39"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;/*</span>
<br class="fancyvrb" /><a 
 id="x1-30080r40"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;Get</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;IP</span><span 
class="cmtt-10">&#x00A0;protocol</span><span 
class="cmtt-10">&#x00A0;number,</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;-1</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;packet</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;too</span><span 
class="cmtt-10">&#x00A0;small.</span>
<br class="fancyvrb" /><a 
 id="x1-30082r41"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*/</span>
<br class="fancyvrb" /><a 
 id="x1-30084r42"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;fun</span><span 
class="cmtt-10">&#x00A0;ip_protocol(</span><span 
class="cmtt-10">&#x00A0;inp</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u8[65536],</span><span 
class="cmtt-10">&#x00A0;inp_sz</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u32</span><span 
class="cmtt-10">&#x00A0;)</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;s32</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-30086r43"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;inp_sz</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;26</span><span 
class="cmtt-10">&#x00A0;then</span><span 
class="cmtt-10">&#x00A0;-1</span><span 
class="cmtt-10">&#x00A0;else</span><span 
class="cmtt-10">&#x00A0;inp[25]</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;s32;</span>
<br class="fancyvrb" /><a 
 id="x1-30088r44"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;};</span>
<br class="fancyvrb" /><a 
 id="x1-30090r45"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30092r46"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;/*</span>

<br class="fancyvrb" /><a 
 id="x1-30094r47"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;Is</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;packet</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;TCP</span><span 
class="cmtt-10">&#x00A0;packet?</span>
<br class="fancyvrb" /><a 
 id="x1-30096r48"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*/</span>
<br class="fancyvrb" /><a 
 id="x1-30098r49"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;fun</span><span 
class="cmtt-10">&#x00A0;tcp_p</span><span 
class="cmtt-10">&#x00A0;(</span><span 
class="cmtt-10">&#x00A0;inp</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u8[65536],</span><span 
class="cmtt-10">&#x00A0;inp_sz</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u32</span><span 
class="cmtt-10">&#x00A0;)</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;bool</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-30100r50"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;var</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;s32;</span>
<br class="fancyvrb" /><a 
 id="x1-30102r51"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30104r52"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;ip_protocol(inp,</span><span 
class="cmtt-10">&#x00A0;inp_sz);</span>
<br class="fancyvrb" /><a 
 id="x1-30106r53"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;0</span><span 
class="cmtt-10">&#x00A0;then</span><span 
class="cmtt-10">&#x00A0;false</span><span 
class="cmtt-10">&#x00A0;else</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;==</span><span 
class="cmtt-10">&#x00A0;0x06;</span>
<br class="fancyvrb" /><a 
 id="x1-30108r54"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;};</span>
<br class="fancyvrb" /><a 
 id="x1-30110r55"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30112r56"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;/*</span>
<br class="fancyvrb" /><a 
 id="x1-30114r57"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;Is</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;packet</span><span 
class="cmtt-10">&#x00A0;a</span><span 
class="cmtt-10">&#x00A0;UDP</span><span 
class="cmtt-10">&#x00A0;packet?</span>
<br class="fancyvrb" /><a 
 id="x1-30116r58"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*/</span>
<br class="fancyvrb" /><a 
 id="x1-30118r59"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;fun</span><span 
class="cmtt-10">&#x00A0;udp_p</span><span 
class="cmtt-10">&#x00A0;(</span><span 
class="cmtt-10">&#x00A0;inp</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u8[65536],</span><span 
class="cmtt-10">&#x00A0;inp_sz</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u32</span><span 
class="cmtt-10">&#x00A0;)</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;bool</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-30120r60"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;var</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;s32;</span>
<br class="fancyvrb" /><a 
 id="x1-30122r61"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30124r62"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;ip_protocol(inp,</span><span 
class="cmtt-10">&#x00A0;inp_sz);</span>
<br class="fancyvrb" /><a 
 id="x1-30126r63"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;0</span><span 
class="cmtt-10">&#x00A0;then</span><span 
class="cmtt-10">&#x00A0;false</span><span 
class="cmtt-10">&#x00A0;else</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;==</span><span 
class="cmtt-10">&#x00A0;0x11;</span>
<br class="fancyvrb" /><a 
 id="x1-30128r64"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;};</span>
<br class="fancyvrb" /><a 
 id="x1-30130r65"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30132r66"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;/*</span>
<br class="fancyvrb" /><a 
 id="x1-30134r67"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;This</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;main</span><span 
class="cmtt-10">&#x00A0;filter</span><span 
class="cmtt-10">&#x00A0;function.</span>
<br class="fancyvrb" /><a 
 id="x1-30136r68"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*/</span>
<br class="fancyvrb" /><a 
 id="x1-30138r69"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;fun</span><span 
class="cmtt-10">&#x00A0;filter(</span><span 
class="cmtt-10">&#x00A0;inp</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u8[65536],</span><span 
class="cmtt-10">&#x00A0;inp_sz</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u32,</span>
<br class="fancyvrb" /><a 
 id="x1-30140r70"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;out</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u8[65536],</span><span 
class="cmtt-10">&#x00A0;out_sz</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u32</span><span 
class="cmtt-10">&#x00A0;)</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u32</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-30142r71"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;var</span><span 
class="cmtt-10">&#x00A0;out_sz_new</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;u32;</span>
<br class="fancyvrb" /><a 
 id="x1-30144r72"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30146r73"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;/*</span><span 
class="cmtt-10">&#x00A0;If</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;input</span><span 
class="cmtt-10">&#x00A0;array</span><span 
class="cmtt-10">&#x00A0;does</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;fit</span><span 
class="cmtt-10">&#x00A0;in</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;output</span><span 
class="cmtt-10">&#x00A0;array,</span><span 
class="cmtt-10">&#x00A0;we&#8217;ll</span>
<br class="fancyvrb" /><a 
 id="x1-30148r74"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;have</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;truncate.</span><span 
class="cmtt-10">&#x00A0;*/</span>
<br class="fancyvrb" /><a 
 id="x1-30150r75"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;out_sz_new</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;inp_sz</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;out_sz</span><span 
class="cmtt-10">&#x00A0;then</span><span 
class="cmtt-10">&#x00A0;inp_sz</span><span 
class="cmtt-10">&#x00A0;else</span><span 
class="cmtt-10">&#x00A0;out_sz;</span>
<br class="fancyvrb" /><a 
 id="x1-30152r76"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30154r77"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;/*</span><span 
class="cmtt-10">&#x00A0;Copy</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;input</span><span 
class="cmtt-10">&#x00A0;array</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;output</span><span 
class="cmtt-10">&#x00A0;array.</span><span 
class="cmtt-10">&#x00A0;*/</span>
<br class="fancyvrb" /><a 
 id="x1-30156r78"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;i</span><span 
class="cmtt-10">&#x00A0;from</span><span 
class="cmtt-10">&#x00A0;0</span><span 
class="cmtt-10">&#x00A0;to</span><span 
class="cmtt-10">&#x00A0;65536</span><span 
class="cmtt-10">&#x00A0;while</span><span 
class="cmtt-10">&#x00A0;i</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;out_sz_new</span><span 
class="cmtt-10">&#x00A0;do</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-30158r79"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;out[i]</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;inp[i];</span>
<br class="fancyvrb" /><a 
 id="x1-30160r80"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;};</span>
<br class="fancyvrb" /><a 
 id="x1-30162r81"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30164r82"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;/*</span><span 
class="cmtt-10">&#x00A0;If</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;packet</span><span 
class="cmtt-10">&#x00A0;is</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;IP</span><span 
class="cmtt-10">&#x00A0;or</span><span 
class="cmtt-10">&#x00A0;not</span><span 
class="cmtt-10">&#x00A0;TCP,</span><span 
class="cmtt-10">&#x00A0;set</span><span 
class="cmtt-10">&#x00A0;the</span><span 
class="cmtt-10">&#x00A0;output</span><span 
class="cmtt-10">&#x00A0;size</span><span 
class="cmtt-10">&#x00A0;to</span>
<br class="fancyvrb" /><a 
 id="x1-30166r83"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;0.</span><span 
class="cmtt-10">&#x00A0;*/</span>
<br class="fancyvrb" /><a 
 id="x1-30168r84"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;!ip_p(inp,</span><span 
class="cmtt-10">&#x00A0;inp_sz)</span><span 
class="cmtt-10">&#x00A0;then</span><span 
class="cmtt-10">&#x00A0;out_sz_new</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;0;</span>
<br class="fancyvrb" /><a 
 id="x1-30170r85"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;!tcp_p(inp,</span><span 
class="cmtt-10">&#x00A0;inp_sz)</span><span 
class="cmtt-10">&#x00A0;then</span><span 
class="cmtt-10">&#x00A0;out_sz_new</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;0;</span>
<br class="fancyvrb" /><a 
 id="x1-30172r86"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-30174r87"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;out_sz_new;</span>
<br class="fancyvrb" /><a 
 id="x1-30176r88"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;};</span>
  </div>
<!--l. 626--><p class="indent">

  <h3 class="sectionHead"><span class="titlemark">8.2</span>.&#x00A0;&#x00A0;<a 
 id="x1-310008.2"></a>The packet filter translated to C by pfc</h3>
<!--l. 629--><p class="noindent">
  <div class="fancyvrb" id="fancyvrb5">
<a 
 id="x1-31002r1"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;/******************************************************************************</span>
<br class="fancyvrb" /><a 
 id="x1-31004r2"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;THIS</span><span 
class="cmtt-10">&#x00A0;FILE</span><span 
class="cmtt-10">&#x00A0;WAS</span><span 
class="cmtt-10">&#x00A0;GENERATED</span><span 
class="cmtt-10">&#x00A0;BY</span><span 
class="cmtt-10">&#x00A0;PFC,</span><span 
class="cmtt-10">&#x00A0;THE</span><span 
class="cmtt-10">&#x00A0;PIFFLE</span><span 
class="cmtt-10">&#x00A0;COMPILER</span>
<br class="fancyvrb" /><a 
 id="x1-31006r3"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;*</span><span 
class="cmtt-10">&#x00A0;Command</span><span 
class="cmtt-10">&#x00A0;line</span><span 
class="cmtt-10">&#x00A0;arguments</span><span 
class="cmtt-10">&#x00A0;were:</span><span 
class="cmtt-10">&#x00A0;pcap_tcp.pfl</span>
<br class="fancyvrb" /><a 
 id="x1-31008r4"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;******************************************************************************/</span>
<br class="fancyvrb" /><a 
 id="x1-31010r5"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;#line</span><span 
class="cmtt-10">&#x00A0;4</span><span 
class="cmtt-10">&#x00A0;"pcap_tcp.c"</span>
<br class="fancyvrb" /><a 
 id="x1-31012r6"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-31014r7"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;int32_t</span><span 
class="cmtt-10">&#x00A0;ethertype(uint8_t</span><span 
class="cmtt-10">&#x00A0;inp[65536],</span><span 
class="cmtt-10">&#x00A0;uint32_t</span><span 
class="cmtt-10">&#x00A0;inp_sz)</span>
<br class="fancyvrb" /><a 
 id="x1-31016r8"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31018r9"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;(inp_sz</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;16)</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31020r10"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;-1;</span>
<br class="fancyvrb" /><a 
 id="x1-31022r11"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span><span 
class="cmtt-10">&#x00A0;else</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31024r12"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;(int32_t)</span><span 
class="cmtt-10">&#x00A0;(((uint16_t)</span><span 
class="cmtt-10">&#x00A0;(inp[14])</span><span 
class="cmtt-10">&#x00A0;&#x003C;&#x003C;</span><span 
class="cmtt-10">&#x00A0;8)</span><span 
class="cmtt-10">&#x00A0;|</span><span 
class="cmtt-10">&#x00A0;(uint16_t)</span><span 
class="cmtt-10">&#x00A0;(inp[15]));</span>
<br class="fancyvrb" /><a 
 id="x1-31026r13"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31028r14"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31030r15"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-31032r16"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;int</span><span 
class="cmtt-10">&#x00A0;ip_p(uint8_t</span><span 
class="cmtt-10">&#x00A0;inp[65536],</span><span 
class="cmtt-10">&#x00A0;uint32_t</span><span 
class="cmtt-10">&#x00A0;inp_sz)</span>
<br class="fancyvrb" /><a 
 id="x1-31034r17"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31036r18"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;int32_t</span><span 
class="cmtt-10">&#x00A0;ethertype_s;</span>
<br class="fancyvrb" /><a 
 id="x1-31038r19"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-31040r20"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;ethertype_s</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;ethertype(inp,</span><span 
class="cmtt-10">&#x00A0;inp_sz);</span>
<br class="fancyvrb" /><a 
 id="x1-31042r21"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;(ethertype_s</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;0)</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31044r22"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;0;</span>
<br class="fancyvrb" /><a 
 id="x1-31046r23"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span><span 
class="cmtt-10">&#x00A0;else</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31048r24"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;ethertype_s</span><span 
class="cmtt-10">&#x00A0;==</span><span 
class="cmtt-10">&#x00A0;2048;</span>
<br class="fancyvrb" /><a 
 id="x1-31050r25"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31052r26"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31054r27"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-31056r28"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;int32_t</span><span 
class="cmtt-10">&#x00A0;ip_protocol(uint8_t</span><span 
class="cmtt-10">&#x00A0;inp[65536],</span><span 
class="cmtt-10">&#x00A0;uint32_t</span><span 
class="cmtt-10">&#x00A0;inp_sz)</span>
<br class="fancyvrb" /><a 
 id="x1-31058r29"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31060r30"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;(inp_sz</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;26)</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31062r31"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;-1;</span>
<br class="fancyvrb" /><a 
 id="x1-31064r32"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span><span 
class="cmtt-10">&#x00A0;else</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31066r33"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;(int32_t)</span><span 
class="cmtt-10">&#x00A0;(inp[25]);</span>
<br class="fancyvrb" /><a 
 id="x1-31068r34"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31070r35"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31072r36"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-31074r37"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;int</span><span 
class="cmtt-10">&#x00A0;tcp_p(uint8_t</span><span 
class="cmtt-10">&#x00A0;inp[65536],</span><span 
class="cmtt-10">&#x00A0;uint32_t</span><span 
class="cmtt-10">&#x00A0;inp_sz)</span>
<br class="fancyvrb" /><a 
 id="x1-31076r38"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31078r39"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;int32_t</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s;</span>
<br class="fancyvrb" /><a 
 id="x1-31080r40"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-31082r41"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;ip_protocol(inp,</span><span 
class="cmtt-10">&#x00A0;inp_sz);</span>
<br class="fancyvrb" /><a 
 id="x1-31084r42"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;(ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;0)</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31086r43"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;0;</span>
<br class="fancyvrb" /><a 
 id="x1-31088r44"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span><span 
class="cmtt-10">&#x00A0;else</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31090r45"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;==</span><span 
class="cmtt-10">&#x00A0;6;</span>
<br class="fancyvrb" /><a 
 id="x1-31092r46"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31094r47"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31096r48"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>

<br class="fancyvrb" /><a 
 id="x1-31098r49"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;int</span><span 
class="cmtt-10">&#x00A0;udp_p(uint8_t</span><span 
class="cmtt-10">&#x00A0;inp[65536],</span><span 
class="cmtt-10">&#x00A0;uint32_t</span><span 
class="cmtt-10">&#x00A0;inp_sz)</span>
<br class="fancyvrb" /><a 
 id="x1-31100r50"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31102r51"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;int32_t</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s;</span>
<br class="fancyvrb" /><a 
 id="x1-31104r52"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-31106r53"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;ip_protocol(inp,</span><span 
class="cmtt-10">&#x00A0;inp_sz);</span>
<br class="fancyvrb" /><a 
 id="x1-31108r54"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;(ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;0)</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31110r55"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;0;</span>
<br class="fancyvrb" /><a 
 id="x1-31112r56"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span><span 
class="cmtt-10">&#x00A0;else</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31114r57"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;ip_protocol_s</span><span 
class="cmtt-10">&#x00A0;==</span><span 
class="cmtt-10">&#x00A0;17;</span>
<br class="fancyvrb" /><a 
 id="x1-31116r58"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31118r59"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31120r60"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-31122r61"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;uint32_t</span><span 
class="cmtt-10">&#x00A0;filter(uint8_t</span><span 
class="cmtt-10">&#x00A0;inp[65536],</span><span 
class="cmtt-10">&#x00A0;uint32_t</span><span 
class="cmtt-10">&#x00A0;inp_sz,</span><span 
class="cmtt-10">&#x00A0;uint8_t</span><span 
class="cmtt-10">&#x00A0;out[65536],</span>
<br class="fancyvrb" /><a 
 id="x1-31124r62"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;uint32_t</span><span 
class="cmtt-10">&#x00A0;out_sz)</span>
<br class="fancyvrb" /><a 
 id="x1-31126r63"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31128r64"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;uint32_t</span><span 
class="cmtt-10">&#x00A0;out_sz_new;</span>
<br class="fancyvrb" /><a 
 id="x1-31130r65"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-31132r66"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;out_sz_new</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;((inp_sz</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;out_sz)</span><span 
class="cmtt-10">&#x00A0;?</span><span 
class="cmtt-10">&#x00A0;inp_sz</span><span 
class="cmtt-10">&#x00A0;:</span><span 
class="cmtt-10">&#x00A0;out_sz);</span>
<br class="fancyvrb" /><a 
 id="x1-31134r67"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31136r68"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;uint32_t</span><span 
class="cmtt-10">&#x00A0;i;</span>
<br class="fancyvrb" /><a 
 id="x1-31138r69"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span>
<br class="fancyvrb" /><a 
 id="x1-31140r70"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;for</span><span 
class="cmtt-10">&#x00A0;(i</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;0;</span><span 
class="cmtt-10">&#x00A0;(i</span><span 
class="cmtt-10">&#x00A0;&#x003C;=</span><span 
class="cmtt-10">&#x00A0;65536)</span><span 
class="cmtt-10">&#x00A0;&amp;&amp;</span><span 
class="cmtt-10">&#x00A0;(i</span><span 
class="cmtt-10">&#x00A0;&#x003C;</span><span 
class="cmtt-10">&#x00A0;out_sz_new);</span><span 
class="cmtt-10">&#x00A0;i++)</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31142r71"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;out[i]</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;inp[i];</span>
<br class="fancyvrb" /><a 
 id="x1-31144r72"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31146r73"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31148r74"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;(!ip_p(inp,</span><span 
class="cmtt-10">&#x00A0;inp_sz))</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31150r75"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;out_sz_new</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;0;</span>
<br class="fancyvrb" /><a 
 id="x1-31152r76"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31154r77"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;if</span><span 
class="cmtt-10">&#x00A0;(!tcp_p(inp,</span><span 
class="cmtt-10">&#x00A0;inp_sz))</span><span 
class="cmtt-10">&#x00A0;{</span>
<br class="fancyvrb" /><a 
 id="x1-31156r78"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;out_sz_new</span><span 
class="cmtt-10">&#x00A0;=</span><span 
class="cmtt-10">&#x00A0;0;</span>
<br class="fancyvrb" /><a 
 id="x1-31158r79"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
<br class="fancyvrb" /><a 
 id="x1-31160r80"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;return</span><span 
class="cmtt-10">&#x00A0;out_sz_new;</span>
<br class="fancyvrb" /><a 
 id="x1-31162r81"></a><span 
class="cmtt-10">&#x00A0;</span><span 
class="cmtt-10">&#x00A0;}</span>
  </div>
   
</body></html> 



